我通过首先扩展抽象扩展了Django的用户类:
class XUserAbstract(AbstractBaseUser, PermissionsMixin):
email = models.EmailField(
db_index=True,
verbose_name='email address',
max_length=255
)
# ...
class Meta:
verbose_name = "User"
verbose_name_plural = "Users"
abstract = True
然后,我通过以下方式从这个摘要创建了一个子类:
class XUser(XUserAbstract):
class Meta(XUserAbstract.Meta):
swappable = 'AUTH_USER_MODEL'
在拥有自己的用户类之后,我从中创建了一个子类并创建了一个FK到Application模型:
class Merchant(XUser):
app = models.ForeignKey(Application)
# ...
class Meta:
verbose_name = _('merchant')
问题在于,当我想在Merchant中创建一个唯一的对时,我无法做到这一点。我想用Merchant.app和XUser.email创建一个独特的对我寻找答案,但解决方案并没有解决我的问题,因为我从其抽象(?)继承了User类。为我发现的子类添加唯一对的解决方案是:
unique_together = ('app', 'user__email')
但它不起作用。错误:
main.business: "unique_together" refers to user__email, a field that doesn't exist.
我也尝试过这些:
unique_together = ('app', 'xuser__email')
unique_together = ('app', 'email')
第二行给出了这个错误:
main.business: "unique_together" refers to email. This is not in the same model as the unique_together statement.
它们也不起作用。
我有什么遗失的吗?