Beste Weg, um die Referenz-User-Modell in Django >= 1.5
Was ist der beste Weg, um Referenz-User-Modell in Django >= 1.5?
Nach der Lektüre Verweisen auf die Benutzer-Modell, habe ich angefangen mit (1) für eine Weile:
(1)
from django.conf import settings
from django.db import models
class Article(models.Model):
author = models.ForeignKey(settings.AUTH_USER_MODEL)
Aber nach der Zen of Python, Lesbarkeit zählt, warum nicht dieses:
(2)
from django.contrib.auth import get_user_model
from django.db import models
User = get_user_model()
class Article(models.Model):
author = models.ForeignKey(User)
- Ja. Das zweite ist, was ich gehen würde, mit. stackoverflow.com/questions/16723525/...
- So, django, doc, irgendwie saugt das Teil, richtig?
Du musst angemeldet sein, um einen Kommentar abzugeben.
UPDATE: Wie von Django 1.11,
get_user_model
kann jetzt aufgerufen werden, beim import, auch in Modulen, die definieren, Modelle.Das bedeutet, dass Sie dies tun könnte:
models.ForeignKey(get_user_model(), ...)
Ursprüngliche Antwort (Django <= 1.11)
Könnten Sie Erfahrung Zirkelbezug Fragen, wenn Sie
get_user_model
auf Modul-Ebene. Eine weitere option für den Import der auth-user-Modell ist:Den
getattr
zurück Django Standard-Benutzer-Modell, dasauth.User
, wennAUTH_USER_MODEL
wird nicht erkannt, in den Einstellungen-Datei.MyUser.objects.all()
nach Erhalt der AUTH_USER_MODEL?getattr
wird ein string zurückgegeben werden, nicht als Objekt). Sie könnenget_user_model
für diesen Fall.Solange Sie nur die Erweiterung der Benutzer-Modell (oder berühren Sie es nicht bei allen), Sie eines tun:
Ich glaube nicht, dass "Lesbarkeit zählt" geht es um den zweiten Fall.
sieht aus wie
für mich. Werden überrascht sein, wenn nicht Arbeit
Meiner Meinung nach der zweite. Mit dem zweiten Weg, Sie können alles, was in die gleiche Datei, und Sie müssen Sie nicht ändern 2 verschiedene Dateien, mit der möglichen Probleme finden Sie mit dass.