I extended Django's user class by extending the abstract first:
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
Then, I created a subclass from this abstract by:
class XUser(XUserAbstract):
class Meta(XUserAbstract.Meta):
swappable = 'AUTH_USER_MODEL'
After I had my own user class, I created a subclass from it and created a FK to Application model:
class Merchant(XUser):
app = models.ForeignKey(Application)
# ...
class Meta:
verbose_name = _('merchant')
The problem is that when I wanted to create a unique pair inside Merchant, I could not manage to do it. I wanted to create a unique pair with Merchant.app and XUser.email I looked for the answer but the solution was not fixing my case because I inherited User class as well from its abstract (?). The solution to add unique pair for a subclass I found was:
unique_together = ('app', 'user__email')
But it does not work. The error:
main.business: "unique_together" refers to user__email, a field that doesn't exist.
I tried those as well:
unique_together = ('app', 'xuser__email')
unique_together = ('app', 'email')
The second line gives this error:
main.business: "unique_together" refers to email. This is not in the same model as the unique_together statement.
They don't also work.
Is there something I'm missing?