我有两个模型,User & company ,其中一个公司可能有多个用户,一个所有者(也是一个用户)。用户只能与一家公司关联。现在我的问题是,我应该如何维护任何公司的所有者?因为如果我在公司模型中使用任何一对一的关系字段,那么它将给我circular-dependency错误,因为我的用户模型中有foreign-key关系字段。
模型如下:
用户模型
class User(BaseMixin, AbstractUser, BlameableMixin):
"""Extends django user with extra optional fields."""
role = models.ManyToManyField(Role)
company = models.ForeignKey(
Company,
related_name='user_company_map',
on_delete=models.SET_NULL,
null=True,
)
designation = models.CharField(max_length=max_length_medium, blank=True, unique=False)
mobile_no = models.CharField(max_length=max_length_medium, blank=False, unique=False)
organization = models.CharField(max_length=max_length_medium, blank=False, unique=False)公司模型
class Company(BaseMixin, BlameableMixin):
"""Company detail."""
name = models.CharField(max_length=max_length_large, blank=True, unique=False)
code_name = models.CharField(max_length=max_length_large, blank=True, unique=True)
domain = models.CharField(max_length=max_length_large, blank=True)如上面代码所示,我在用户模型上有一个外键字段,它将我的用户模型连接到公司模型。
现在,我想有一个领域,将帮助我跟踪用户谁是任何特定公司的所有者。如果您提供django-orm查询来获取与其用户和所有者一起的公司对象,也会非常有帮助。我也想询问一个用户与它的相关公司,以及他/她是否是该公司的所有者。
注:我想拥有公司模式的所有者字段,但如果根据我的要求,它应该在用户模型,我不会介意。我只是想找个解决办法。如有任何建议,将不胜感激。谢谢
发布于 2020-12-15 10:27:29
Django允许您将ForeignKey的ForeignKey参数指定为字符串(https://docs.djangoproject.com/en/dev/ref/models/fields/#foreignkey),这将使您能够在Django ORM中创建关系。
class Company(BaseMixin, BlameableMixin):
"""Company detail."""
name = models.CharField(max_length=max_length_large, blank=True, unique=False)
code_name = models.CharField(max_length=max_length_large, blank=True, unique=True)
domain = models.CharField(max_length=max_length_large, blank=True)
owner = models.OneToOne("User", related_name="owner_of")然后,您可以从公司对象company_object.owner直接访问所有者。通过user_object.company访问特定用户的公司。您还可以通过user_object.owner_of访问用户拥有的公司。
https://stackoverflow.com/questions/65300864
复制相似问题