【发布时间】:2013-10-14 16:41:29
【问题描述】:
我有两个模型:
Base_Activity:
topics = models.ManyToManyField(Topic)
... some others
用户活动:
user = models.ForeignKey(settings.AUTH_USER_MODEL)
activity = models.ForeignKey(Base_Activity)
is_archived = models.BooleanField(default=False)
现在我想查询 Base_activity 以选择所有带有 topic X 的行,并为 user=*current_user 排除 User_Activity 中具有匹配行的任何行* 和 is_archived=True。
我已阅读 Django 文档,了解如何使用 follow relationships backward,因为我查询了 Base_Activity,但需要来自 User_Activity 的信息,该信息具有前者的 ForeignKey。但是,即使在 Django 控制台中测试此方法也不起作用:
a = Base_Activity.objects.filter(topics__slug = topic)
a.user_activity_set.all()
AttributeError: 'InheritanceQuerySet' object has no attribute 'user_activity_set'
问题:进行查询的最佳方式是什么?如果这确实是向后跟随 ForeignKey,那我做错了什么?
【问题讨论】: