【问题标题】:Django Model Inheritance - Multi-Table InheritanceDjango 模型继承 - 多表继承
【发布时间】:2018-08-03 10:52:04
【问题描述】:

我正在创建一个数据库,其中包含两个表客户和卖家,它们都继承自使用 Django auth 用户的用户表。 我的问题是,一个用户有可能同时是客户和卖家吗?

class BaseUser(models.Model):
# have common fields
is_seller = models.BooleanField()
is_customer = models.BooleanField()
class Meta:
    abstract = True



class Customer(BaseUser):
    # have customer specific fields 



class Seller(BaseUser):
    # have seller specific fields 

【问题讨论】:

  • Your question 非常广泛。最好提供描述它的代码。但是,是的,一个用户可能两者兼而有之。
  • 上例中auth.user在哪里?
  • @raratiru我没有在Django的内置模块中编写导入部分auth用户。

标签: django models


【解决方案1】:

对于您提到的当前架构,答案是否定的,但您可以拥有

class BaseUser(models.Model):
    # have common fields 
    class Meta:
        abstract = True



class Customer(BaseUser):
    # have customer specific fields 
    class Meta:
        abstract = True


class Seller(BaseUser):
    # have seller specific fields 
    class Meta:
        abstract = True

# this way your user can either inherit customer or seller or both

class User(Seller):
    pass
#OR

class User(Buyer):
    pass
#OR
class User(Seller, Buyer):
    pass

【讨论】:

  • 谢谢。是否也以这种方式更新了“否”中的问题答案?
【解决方案2】:

是的,您可以有另一个模型,例如实体,它与客户和卖方具有一对一的关系

class Entity(models.Model):
    customer = models.OneToOneField(Customer)
    seller = models.OneToOneField(Seller)

现在,您可以使用此模型,或自定义用户模型,随心所欲。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-09-20
    • 1970-01-01
    • 2011-03-11
    • 1970-01-01
    • 1970-01-01
    • 2013-01-09
    • 2023-03-05
    相关资源
    最近更新 更多