【发布时间】:2022-02-05 00:40:56
【问题描述】:
我有 2 个表产品和用户,每个表都有权限列表,我需要向用户列出所有产品,以便用户拥有所有产品权限
检查代码表示:
产品型号:
class Product(TimeStampedModel, SoftDeletableModel):
title = models.CharField(max_length=255, unique=True)
permission = models.ManyToManyField(Permission, related_name="Permissions")
这是用户模型:
class User(AbstractBaseUser, SoftDeletableModel):
display_name = models.CharField(max_length=64, blank=True)
permission = models.ManyToManyField(Permission, related_name="Permissions")
假设我们有以下数据:
user1 权限 A1,A2,C1,C2,C3
user2 权限 A1,A2,B1,B2,C1,C2,C3
产品具有权限 A1,B1,C1
user1“没有B1权限”看不到产品
user2 可以看到产品
我尝试了以下方法:
Products.objects.filter(permission__in=user.permission.values("id"))
也试过这个 sql 查询:
Select * from products p
Inner join productspermession pp
On p.id = pp.product_id
Inner join userpermessions up on pp.permession_id = up.permession_id
where up.user_id = 1
【问题讨论】: