我还有很多关于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. 任何帮助表示赞赏。
答案 0 :(得分:0)
您可以使用双下划线语法来遍历关系。假设allowed_users
是Page
上的方法:
User.objects.filter(community__portal__page=self)