У меня одна проблема. В Django я создал новую модель:
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
Но не работает: ImportError: cannot import name user
Как это исправить?
Итак, я хочу создать новую OneToOne
таблицу «worker» в db, которая связана с таблицей «auth_user». Благодарю.
Если вы используете пользовательскую модель User, сделайте следующее, чтобы ссылаться на нее:
from django.contrib.auth import get_user_model User = get_user_model()
Или, если вы используете его во внешнем ключе или отношениях многие-ко-многим:
from django.conf import settings .... user = models.ForeignKey(settings.AUTH_USER_MODEL)
документы
источник
AUTH_USER_MODEL
хорошее решение. вот полное решение по вопросу.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
источник
Чтобы ваш код оставался универсальным, используйте
get_user_model()
метод для получения модели пользователя иAUTH_USER_MODEL
настройку для ссылки на нее при определении отношений модели к модели пользователя вместо непосредственной ссылки на модель пользователя auth.ссылка: Django By Example Book
источник