Django模型继承-多表继承



我正在创建一个数据库,该数据库有两个表customer和seller,它们都是从使用Django auth-user的用户表继承的。我的问题是,用户有可能同时成为客户和卖家吗?

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 

对于您提到的当前模式,答案是NO,但您可以使用

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

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

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

现在,您可以使用此模型,也可以自定义用户模型,无论您想要什么。

最新更新