Django - 获得多对多的链接模型

时间:2017-11-02 13:15:15

标签: django django-models

我有两种不同的模型:

群组模型

class Group(models.Model):
  (...)
  users=models.ManyToManyField(users.User, related_name='trainings')

非常标准的用户模型。 我正在尝试编写一个函数,它返回给定User对象的所有链接组。

解决我的问题的方法是这样的:

def get_groups(user):
  connected_groups = Group.objects.filter(user in users)

但是这会引发错误。这是我尝试的事情吗?或者我应该在User模型中创建一个'linked_groups'变量?

1 个答案:

答案 0 :(得分:1)

请查看此处的文档:https://docs.djangoproject.com/en/1.11/topics/db/queries/#many-to-many-relationships

  

多对多关系的两端都可以自动访问另一端的API。 API就像上面的“向后”一对多关系一样。

     

唯一的区别在于属性命名:定义ManyToManyField的模型使用该字段本身的属性名称,而“反向”模型使用原始模型的小写模型名称,加上' _set&# 39; (就像反向的一对多关系一样)。

对于应用中名为User的任何uu.group_set.all()将是与该用户具有多对多关系的所有Groups的查询集。由于您已定义related_name,因此可以使用更易读的语法u.trainings.all()