我有 User
(django 的默认模型)和 Interest
。
它们通过两个多对多模型相互关联,因此请跟踪有关关系的其他数据。
一个模型,Selected
,跟踪用户希望与之关联的兴趣。
另一个模型,Recommended
,列出要向用户建议的兴趣。
给一个 User
对象,我怎样才能得到其中一个? user.interest_set.all()
仅通过Selected
返回兴趣。如何指定要使用的关系/直通模型?
最佳答案
Django 甚至不允许您定义相同模型之间的两个关系,除非您定义related_name
。所以你使用那个属性。
class Interest(models.Model):
user_selected = models.ManyToManyField(
User, through="Selected", related_name="selected_interests")
user_recommended = models.ManyToManyField(
User, through="Recommended", related_name="recommended_interests")
my_user.selected_interests.all() # Interests where the user is in `user_selected`
my_user.recommended_interests.all() # Interests where the user is in `user_recommended`
关于Django 1.8 : When items are related via two separate relationships, 如何指定要使用的关系?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31743273/