Mam jeden problem. W Django stworzyłem nowy model:
from django.db import models
from django.contrib.auth import user
class Workers(models.Model):
user = models.OneToOneField(User, primary_key=True)
work_group = models.CharField(max_length=20)
card_num = models.IntegerField()
def __unicode__(self):
return self.user
Ale to nie działa: ImportError: cannot import name user
Jak to naprawić?
Dlatego chcę utworzyć nową tabelę „workers” w bazie danych, która ma OneToOne
relację z tabelą „auth_user”. Dzięki.
Jeśli używasz niestandardowego modelu użytkownika, wykonaj następujące czynności, aby się do niego odwołać:
from django.contrib.auth import get_user_model User = get_user_model()
Lub jeśli używasz go w kluczu obcym lub relacjach wiele do wielu:
from django.conf import settings .... user = models.ForeignKey(settings.AUTH_USER_MODEL)
dokumenty
źródło
AUTH_USER_MODEL
to dobre rozwiązanie. tutaj jest kompletne rozwiązanie zgodnie z pytaniem.from django.db import models from django.conf import settings class Workers(models.Model): user = models.ForeignKey(settings.AUTH_USER_MODEL) work_group = models.CharField(max_length=20) card_num = models.IntegerField() def __unicode__(self): return self.user.id
źródło
Aby zachować ogólny kod, użyj
get_user_model()
metody, aby pobrać model użytkownika iAUTH_USER_MODEL
ustawienia, aby odwoływać się do niego podczas definiowania relacji modelu do modelu użytkownika, zamiast odwoływać się bezpośrednio do modelu użytkownika uwierzytelniania.ref: Django By Example Book
źródło