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)
现在,您可以使用此模型,也可以自定义用户模型。
我正在创建一个数据库,其中包含两个 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)
现在,您可以使用此模型,也可以自定义用户模型。