Django 1.8:当项目通过两个单独的关系关联时,如何指定要使用的关系?
Django 1.8: When items are related via two separate relationships, how can I specify which relationship to use?
我有 User
(django 的默认模型)和 Interest
。
它们通过两个 多对多 模型相互关联,因此请跟踪有关关系的其他数据。
一个模型,Selected
,跟踪用户希望与之关联的兴趣。
另一个模型 Recommended
列出了要向用户建议的兴趣。
给一个User
对象,我怎样才能得到其中一个? user.interest_set.all()
returns 兴趣仅来自 Selected
。如何指定要使用的 relation/through 模型?
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`
我有 User
(django 的默认模型)和 Interest
。
它们通过两个 多对多 模型相互关联,因此请跟踪有关关系的其他数据。
一个模型,Selected
,跟踪用户希望与之关联的兴趣。
另一个模型 Recommended
列出了要向用户建议的兴趣。
给一个User
对象,我怎样才能得到其中一个? user.interest_set.all()
returns 兴趣仅来自 Selected
。如何指定要使用的 relation/through 模型?
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`