簡體   English   中英

Django ORM:遞歸多對多字段聯接

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM