寻找一种将一个字段添加到Django's
User
模型的最简单方法。
我有两种类型不同的用户——公司和客户,所以我决定创建两种类型的UserProfiles
. CompanyProfile
和CustomerProfile
。每个用户都有CompanyProfile
或CustomerProfile
。
为了能够filter
确定它是哪种类型,我想将type
字段添加到User
模型中。
你有什么建议?现在我UserProfile
在中间,这似乎有点矫枉过正,它使过滤、查找和许多其他事情变得不那么简单。
class UserProfile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE, related_name='userprofile')
type = models.CharField(max_length=100, choices=settings.OBSTARAJME_USERPROFILE_TYPE_CHOICES)
company_profile = models.OneToOneField('CompanyProfile', null=True, blank=True, on_delete=models.CASCADE,
related_name='userprofile')
customer_profile = models.OneToOneField('CustomerProfile', null=True, blank=True, on_delete=models.CASCADE,
related_name='userprofile')
我正在考虑创建我的自定义User
模型。
class User(AbstractBaseUser):
type = models.CharField(max_length=100, choices=settings.OBSTARAJME_USER_TYPE_CHOICES)
USERNAME_FIELD = 'username'
但是Django
说没有这样的字段username
,我想避免User
手动编写整个模型及其所有字段。
编辑
我知道我可以根据customerprofile__isnull=False
实际情况进行过滤,我根本不需要type
字段,但它看起来不是最好的方法。