gpt4 book ai didi

django - 如何使用 Django ManyToMany 关系的 'reverse'?

转载 作者:行者123 更新时间:2023-11-28 19:35:04 25 4
gpt4 key购买 nike

我有 Rails 背景,在使用 Django 中提供的“关联方法”时遇到了一些麻烦。我有两个模型(为简洁起见进行了简化),如下所示:

class User(models.Model):
username = models.CharField(max_length=100, unique=True)
companies = models.ManyToManyField('Company', blank=True)

class Company(models.Model):
name = models.CharField(max_length=255)

根据 Django 文档:

"It doesn't matter which model has the ManyToManyField, but you should only put it in one of the models -- not both.".

所以我明白,如果我有一个名为 user 的用户实例,我可以:

user.companies

我的问题是如何进行反向操作?我如何获得属于公司实例的所有用户,比方说公司:

company.users # This doesn't work!

执行此操作的惯例是什么?我读过的文档并没有真正涵盖这一点。我需要关联以双向方式工作,所以我不能简单地将它从一种模型移动到另一种模型。

最佳答案

company.user_set.all()

将返回属于特定公司的 User 对象的 QuerySet。默认情况下,您使用 modelname_set 来反转关系,但您可以覆盖它,在定义模型时提供 related_name 作为参数,即

class User(models.Model):
companies = models.ManyToManyField(Company, ..., related_name="users")

> company.users.all()

here is the relevant documentation

关于django - 如何使用 Django ManyToMany 关系的 'reverse'?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9352662/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com