Модель Django - внешний ключ к пользователю

Я хочу создать новую модель, например:

user_name = models.ForeignKey(u"Username", User),

но когда я пытаюсь синхронизировать, я получаю это сообщение об ошибке:

"Объект AttributeError: 'unicode' не имеет атрибута '_meta'"

Когда я смотрю на некоторые уроки, все кажется таким же, как в моей модели, и проблема с "_meta" никогда не упоминается.

Ответы

Ответ 1

Более безопасный способ сделать это - использовать AUTH_USER_MODEL из файла настроек.

Пример:

from django.db import models
from django.conf import settings

class Article(models.Model):
    headline = models.CharField(max_length=255)
    article = models.TextField()
    author = models.ForeignKey(settings.AUTH_USER_MODEL)

По умолчанию settings.AUTH_USER_MODEL ссылается на django.contrib.auth.models.User, не требуя, чтобы вы что-либо делали.

Преимущество заключается в том, что ваше приложение будет продолжать работать, даже если вы используете пользовательскую модель без изменений.

Для получения дополнительной информации о том, как использовать пользовательские модели пользователя ознакомьтесь с этой частью документации Django

Ответ 2

Вы просто хотите:

from django.contrib.auth.models import User

class MyModel(models.Model):
    ...
    user = models.ForeignKey(User)
    ...