首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用不依赖循环的一对一关系实现一对多关系。

用不依赖循环的一对一关系实现一对多关系。
EN

Stack Overflow用户
提问于 2020-12-15 06:11:45
回答 1查看 65关注 0票数 1

我有两个模型,User & company ,其中一个公司可能有多个用户,一个所有者(也是一个用户)。用户只能与一家公司关联。现在我的问题是,我应该如何维护任何公司的所有者?因为如果我在公司模型中使用任何一对一的关系字段,那么它将给我circular-dependency错误,因为我的用户模型中有foreign-key关系字段。

模型如下:

用户模型

代码语言:javascript
复制
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)

公司模型

代码语言:javascript
复制
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查询来获取与其用户和所有者一起的公司对象,也会非常有帮助。我也想询问一个用户与它的相关公司,以及他/她是否是该公司的所有者。

注:我想拥有公司模式的所有者字段,但如果根据我的要求,它应该在用户模型,我不会介意。我只是想找个解决办法。如有任何建议,将不胜感激。谢谢

EN

回答 1

Stack Overflow用户

发布于 2020-12-15 10:27:29

Django允许您将ForeignKeyForeignKey参数指定为字符串(https://docs.djangoproject.com/en/dev/ref/models/fields/#foreignkey),这将使您能够在Django ORM中创建关系。

代码语言:javascript
复制
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访问用户拥有的公司。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65300864

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档