Django benutzerdefiniertes Benutzerfeld kollidiert mit AbstractBaseUser
Ich baue ein Django-Projekt aus einer vorhandenen Datenbank auf. Die Datenbank wird von anderen Systemen verwendet, daher kann ich ihr Schema nicht ändern. Dies ist mein aktuelles benutzerdefiniertes Benutzermodell:
class Users(AbstractBaseUser):
id_user = models.IntegerField(primary_key=True)
role = models.IntegerField()
username = models.CharField(max_length=50, unique=True)
last_login_date = models.DateTimeField()
AbstractBaseUser benötigt eine Spalte mit dem Namenlast_login
, während die aktuelle Datenbanktabelle @ hlast_login_date
Spalte, die wie @ dieAbstractBaseUser.last_login
. Jetzt muss ich diese Spalte in @ verwendUsers.last_login
:
...
last_login = models.DateTimeField(_('last login'), default=timezone.now, column_name='last_login_date')
...
Allerdings würde Django werfendjango.core.exceptions.FieldError: Local field 'last_login' in class 'Users' clashes with field of similar name from base class 'AbstractBaseUser'
da Django das Überschreiben von Elternfeldern nicht erlaubt.
Wie werden die Felder gesetzt?