Django 模型继承 - Multi-Table 继承

Django Model Inheritance - Multi-Table Inheritance

我正在创建一个数据库,其中包含两个 table 客户和卖家,它们都继承自使用 Django 身份验证用户的用户 table。 我的问题是用户是否可以同时是客户和卖家?

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 

根据您提到的当前架构,答案是否定的,但您可以

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

是的,你可以有另一个模型,例如 Entity,它与 Customer 和 Seller 具有一对一的关系

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

现在,您可以使用此模型,也可以自定义用户模型。