【发布时间】:2014-10-23 19:39:41
【问题描述】:
我正在尝试在注释中引用一个字段,就像 F() 对象所做的那样。
# Getting users in this particular Group (using GroupMediator to also get "joined" date)
GroupMediator.objects.filter(group=group).annotate(
# GroupPosition is a user's title within a group, like "treasurer".
position=GroupPosition.objects.filter(group=group, recipients=F('member')))
问题: F('member') 在GroupPosition 中查找“成员”字段,但我想从GroupMediator 中获取“成员”字段。
我试图在获取所有成员的同一查询中获取每个成员在组中的位置。我正在努力提高效率,因此我不必使用 for 循环并查询每个成员来获取他们的位置。
如果可能,我想避免使用原始查询。我被卡住了。
型号:
class Group(models.Model):
title = models.CharField(_("title"), max_length=60, blank=False)
members = models.ManyToManyField(User, related_name='member_of_groups', verbose_name=_("members"), blank=True, through='GroupMediator')
class GroupMediator(models.Model):
member = models.ForeignKey(User, related_name="group_mediators", verbose_name=_("member"), blank=False, editable=False)
group = models.ForeignKey(Group, related_name="group_mediators", verbose_name=_("group"), blank=False, editable=False)
joined = models.DateTimeField(_("created"), auto_now_add=True, editable=False)
class GroupPosition(models.Model):
# This is its own model so many different custom positions can be created for each group.
group = models.ForeignKey(Group, related_name="group_positions", verbose_name=_("group"), blank=False, editable=False)
recipients = models.ManyToManyField(User, related_name='received_group_positions', verbose_name=_("recipients"), blank=True)
title = models.CharField(_("title"), max_length=60, blank=False)
谢谢!我可能接近这个错误,任何和所有的建议都表示赞赏。
【问题讨论】:
标签: django django-models django-queryset django-1.7