Erweitern des Django-Benutzermodells: Optimale Ansätze
Bei der Erweiterung des integrierten Django-Benutzermodells mit benutzerdefinierten Feldern stechen zwei Hauptansätze hervor :
1. Verwendung einer OneToOneField(User)-Eigenschaft
Dies ist der empfohlene Django-Ansatz und beinhaltet die Erstellung eines neuen Modells mit einer Eins-zu-Eins-Beziehung zum Benutzermodell. Dieses „Profil“-Modell kann zusätzliche Informationen über den Benutzer speichern.
from django.db import models from django.contrib.auth.models import User class UserProfile(models.Model): user = models.OneToOneField(User, on_delete=models.CASCADE) # Custom fields here, e.g.: address = models.CharField(max_length=255) phone_number = models.CharField(max_length=15) # ...
2. Ersetzen durch ein benutzerdefiniertes Benutzermodell
Bei diesem Ansatz wird das Django-Benutzermodell vollständig durch ein benutzerdefiniertes Modell ersetzt, das die gewünschten Änderungen enthält. Es gilt jedoch als drastisch und bringt Warnungen mit sich:
E-Mail als Benutzernamen verwenden
Um E-Mail als Benutzernamen zu verwenden, können Sie entweder:
Beispiel:
class CustomUser(AbstractUser): def get_username(self): return self.email # ... user = CustomUser.objects.get(username='john@example.com') user.set_username('jack@example.com') user.save()
Das obige ist der detaillierte Inhalt vonWie erweitert man das Django-Benutzermodell am besten mit benutzerdefinierten Feldern?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!