我有两种不同的模型:
群组模型
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'变量?
答案 0 :(得分:1)
请查看此处的文档:https://docs.djangoproject.com/en/1.11/topics/db/queries/#many-to-many-relationships
多对多关系的两端都可以自动访问另一端的API。 API就像上面的“向后”一对多关系一样。
唯一的区别在于属性命名:定义ManyToManyField的模型使用该字段本身的属性名称,而“反向”模型使用原始模型的小写模型名称,加上' _set&# 39; (就像反向的一对多关系一样)。
对于应用中名为User
的任何u
,u.group_set.all()
将是与该用户具有多对多关系的所有Groups
的查询集。由于您已定义related_name
,因此可以使用更易读的语法u.trainings.all()
。