Мой проект django реализует пользовательскую модель пользователя (MyUser). Он также реализует прокси-модель (MyUserProxy) для моего пользовательского пользователя, и я хочу использовать прокси-модель для удаления пользователей из моей базы данных. См. Модель и менеджер ниже,
проект/аккаунт/models.py
from django.contrib.auth.models import AbstractBaseUser, PermissionsMixin
from django.db import models
from .managers import MyUserManager
class MyUser(AbstractUser, PermissionsMixin):
USERNAME_FIELD = 'username'
REQUIRED_FIELDS = ['email']
username = models.CharField(max_length=255, unique=True)
email = models.CharField(max_length=255, unique=True)
...
objects = MyUserManager()
class Meta():
verbose_name = _('My user')
verbose_name_plural = _('My users')
def __unicode__(self):
return self.username
class MyUserProxy(MyUser):
class Meta():
proxy = True
проект/аккаунт/managers.py
from django.contrib.auth.models import UserManager
class MyUserManager(UserManager):
def __init__(self, *args, **kwargs):
super(MyUserManager, self).__init__(*args, **kwargs)
Несколько других приложений в моем проекте имеют отношения ForeignKey с моим пользовательским пользователем (MyUser), и поэтому, когда я удаляю пользователя, записи, связанные с этим пользователем, также удаляются. Когда я указываю AUTH_USER_MODEL в моем settings.py как MyUser, тогда это работает нормально, и записи из связанных приложений удаляются вместе с пользователем.
проект/пример/settings.py
AUTH_USER_MODEL = 'account.MyUser'
Однако, когда я использую MyUserProxy для AUTH_USER_MODEL, я получаю сообщение об ошибке,
OperationalError: (1054, "Unknown column 'otherapp.myuserproxy_id'
in 'where clause'")
Django, кажется, думает, что столбец базы данных ForeignKey для приложения «otherapp» — это «myuserproxy_id», тогда как на самом деле это «myuser_id», поскольку модель MyUser указала его. Почему django связывает имя моей прокси-модели (MyUserProxy) со столбцом базы данных?
https://docs.djangoproject.com/en/dev/topics/db/models/#proxy-models