如何在 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 属性自动为您提供的。