我在django中创建了自己的自定义用户模型,并在settings.py中指定了相同的用户模型:
AUTH_USER_MODEL = 'userprofile.User'
在此之后,我创建了 用户 作为抽象类,因为我想要从这个类派生两个单独的类,即 - 供应商 和 客户 。这将创建两个单独的数据库表。
当我创建另一个类 - ProductReview 时,会出现问题。此类需要为添加评论的用户提供外键,此用户可以是 供应商 或 客户 。我不知道如何在此处设置此外键约束,因为 settings.AUTH_USER_MODEL 将无效,因为 用户 是一个抽象类。
以下是类结构:
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)
编辑 - 我为每个模型提供了三个不同的表格。
答案 0 :(得分:0)
ProductReview
模型类中的用户字段声明将使用USER
模型进行映射。要定义它是Vendor
还是Customer
,您需要声明另一个字段,可能是整数字段,映射声明为
TYPE_OF_USER_MAPPING = {
1: 'Vendor',
2: 'Customer'
}
然后创建一个查询以检查原始Vendor
的模型Customer
或USER
。
答案 1 :(得分:0)
对于您的情况,我会考虑更改我的建模。我将如何做到这一点:
User
作为Django的auth用户模型。Vendor
和Customer
类,并与User
模型建立一对一的关系,以便对其进行扩展。通过这种方式,您可以ProductReview
引用User
,可以是Vendor
或Customer
,也可以引用{{} 1}}只有你愿意。