我首先通过扩展抽象来扩展 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.
他们也不工作。
有什么我想念的吗?