Mik*_*cic 40 django django-models
我来自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)
Run Code Online (Sandbox Code Playgroud)
根据Django文档:
"具有ManyToManyField的模型无关紧要,但您只应将其放在其中一个模型中 - 而不是两者."
所以我理解,如果我有一个用户的实例,称为用户,我可以这样做:
user.companies
Run Code Online (Sandbox Code Playgroud)
我的问题是如何反过来?如何获取属于公司实例的所有用户,假设公司:
company.users # This doesn't work!
Run Code Online (Sandbox Code Playgroud)
这样做的惯例是什么?我读过的文档并没有真正涵盖这一点.我需要关联工作两种方式,所以我不能简单地将它从一个模型移动到另一个模型.
Tim*_*ony 72
company.user_set.all()
Run Code Online (Sandbox Code Playgroud)
将返回User属于特定公司的对象的QuerySet .默认情况下,您可以使用modelname_set反转关系,但是您可以覆盖它,related_name在定义模型时提供一个参数,即
class User(models.Model):
companies = models.ManyToManyField(User, ..., related_name="users")
> company.users.all()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
19844 次 |
| 最近记录: |