Django模型继承-多表继承

时间:2018-08-03 10:52:04

标签: django models

我正在创建一个包含两个表customer和seller的数据库,它们都从使用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 

2 个答案:

答案 0 :(得分:0)

在当前模式下,您提到的答案是“否”,但是您可以拥有

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

答案 1 :(得分:0)

是的,您可以使用其他模型,例如实体,并且它与客户和卖方具有一对一的关系

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

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