[英]How to make Django custom user model an abstract class
我已经在django中创建了自己的自定义用户模型,并在settings.py中指定了相同的模型:
AUTH_USER_MODEL = 'userprofile.User'
此后,我将User创建为抽象类,因为我想从该类派生两个独立的类-Vendor和Customer 。 这将创建两个单独的数据库表。
当我创建另一个类ProductReview时,会出现问题。 此类需要添加评论的用户的外键,并且该用户可以是Vendor或Customer 。 我不确定如何在此放置外键约束,因为settings.AUTH_USER_MODEL将不起作用,因为User是一个抽象类。
以下是类结构:
class UserManager(BaseUserManager):
class User(PermissionsMixin, AbstractBaseUser):
class Meta:
abstract = True
class Vendor(User):
class Customer(User):
class ProductReview(models.Model):
user = models.ForeignKey(
settings.AUTH_USER_MODEL, related_name='reviews', null=True, blank=True)
编辑 -我为每个模型分别制作了三个不同的表格。
ProductReview
模型类中的用户字段声明将与USER
模型映射。 要定义它是Vendor
还是Customer
您需要声明另一个字段,可能是整数字段,且其映射声明为
TYPE_OF_USER_MAPPING = {
1: 'Vendor',
2: 'Customer'
}
然后创建一个查询以检查原始USER
是哪个Vendor
或Customer
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.