如何在 django 中以双向多对多关系从两个模型中获取集合
How to get collection from both models in a bi-directional many-to-many relationship in django
我有两个对象,Company 和 Account,在不同的包中。
他们通过 employee 建立多对多关系,该关系有一个附加字段 is_admin.
我在Company里定义了关系,网上看好像不用在Account里重新定义关系(这样会造成循环导入)。
从 CompanySerializer 中检索所有帐户没有问题,
但我也需要能够让所有公司都注册到一个帐户。
这是我的想法:
账户模型:
class Account(AbstractBaseUser):
current_jobs = models.ManyToManyField(
Company, through='Employee') // I need to define current_jobs in some way
//,but this results in circular import
公司型号:
class Company(models.Model):
employees = models.ManyToManyField(
settings.AUTH_USER_MODEL, through='Employee')
员工模型:
class Employee(models.Model):
class Meta:
unique_together = ('user', 'company')
user = models.ForeignKey(settings.AUTH_USER_MODEL,
on_delete=models.CASCADE)
company = models.ForeignKey(Company, on_delete=models.CASCADE)
is_admin = models.BooleanField()
问题是,我现在将如何定义如何在两个序列化程序中获取每个列表。
所以公司序列化程序和帐户序列化程序...
如果我没有定义 current_jobs,我会收到一条错误消息,指出 current_jobs 未定义,这当然不是。
我不明白为什么您认为需要在帐户上定义 current_jobs
。这是通过 reverse relationship as company_set
; if you need it to be current_jobs
you can set the related_name
属性自动为您提供的。
我有两个对象,Company 和 Account,在不同的包中。 他们通过 employee 建立多对多关系,该关系有一个附加字段 is_admin.
我在Company里定义了关系,网上看好像不用在Account里重新定义关系(这样会造成循环导入)。
从 CompanySerializer 中检索所有帐户没有问题, 但我也需要能够让所有公司都注册到一个帐户。
这是我的想法:
账户模型:
class Account(AbstractBaseUser):
current_jobs = models.ManyToManyField(
Company, through='Employee') // I need to define current_jobs in some way
//,but this results in circular import
公司型号:
class Company(models.Model):
employees = models.ManyToManyField(
settings.AUTH_USER_MODEL, through='Employee')
员工模型:
class Employee(models.Model):
class Meta:
unique_together = ('user', 'company')
user = models.ForeignKey(settings.AUTH_USER_MODEL,
on_delete=models.CASCADE)
company = models.ForeignKey(Company, on_delete=models.CASCADE)
is_admin = models.BooleanField()
问题是,我现在将如何定义如何在两个序列化程序中获取每个列表。 所以公司序列化程序和帐户序列化程序...
如果我没有定义 current_jobs,我会收到一条错误消息,指出 current_jobs 未定义,这当然不是。
我不明白为什么您认为需要在帐户上定义 current_jobs
。这是通过 reverse relationship as company_set
; if you need it to be current_jobs
you can set the related_name
属性自动为您提供的。