[英]Django ORM: Recursive many-to-many field join
我有以下模型:
class Permission(models.Model):
per_id = models.ForeignKey("self",null=True)
permissions = models.ManyToManyField("self", null=True)
type = models.IntegerField(blank=True, null=True)
和:
class User(models.Model):
name = models.CharField(max_length=50, blank=True)
permissions = models.ManyToManyField(Permission)
我們擁有類型為1823的角色,這些角色指向類型為1822且許可權為null(多對多遞歸關系)的許多許可權,“角色和許可權”都存儲在許可權表中。 我想使用Django ORM獲得用戶許可。
User.objects.get(pk=3).permissions.filter(permissions__isnull=False).values("permission__id") "Gives only role's permissions
User.objects.get(pk=3).permissions.filter(permissions__isnull=True).values("id") "Gives only permissions
我想在單個查詢中組合和區分這兩個QuerySet。
謝謝
這樣的事情解決了我的問題:
Permission.objects.filter(Q(permission__user__id=3) | Q(user__id=3), type=1822).distinct()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.