Django 1.8 : When items are related via two separate relationships, 如何指定要使用的关系?

标签 django django-models many-to-many django-queryset m2m

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

相关文章:

Django 1.9 "Common Password Validator"- 奇怪的行为

python - 无法将 django 日期时间字段更新为 Null

doctrine - 删除多对多表中的记录

mysql - 多对多对多关系? (子类别查找)

c# - 具有外连接且简洁的多对多

python - django ALLOWED_HOSTS 不工作

python - 在 Django 2 中使用 URLPathVersioning 处理版本控制

Django 模型查询集过滤器作为函数

database - 如何为多对多关系创建 initial_data Json fixture?

django-models - 我应该对 Django 应用程序中的所有模型使用 Wagtail 吗?