0

关于 Django 模型,我还有很多东西要学,所以要温柔。考虑这个模型:

from django.db import models
from django.contrib.auth.models import User

class Community(models.Model):
    users = models.ManyToManyField(User)

class Portal(models.Model):
    community = models.ForeignKey(Community, blank=True, null=True)

class Page(models.Model):
    portals = models.ManyToManyField(Portal, null=True)

所以一个页面可以在许多门户中。每个门户网站都有一个社区,一个社区有很多用户。现在我正在尝试查找与单个页面相关的所有用户:

def allowed_users(self):
    return User.objects.filter(community__in=Community.objects.filter(portal__in=self.portals.all()))

这行得通,但我确信有一种更有效的方法。可能与 Q 或 F. 任何帮助表示赞赏。

4

1 回答 1

0

您可以使用双下划线语法来遍历关系。假设allowed_users是一个方法Page

User.objects.filter(community__portal__page=self)
于 2013-08-13T15:58:37.530 回答