我有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`