Django - внешний ключ к модели пользователя - PullRequest
16 голосов
/ 05 сентября 2011

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

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

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

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

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

Ответы [ 2 ]

34 голосов
/ 21 октября 2015

Более безопасный способ сделать это - использовать 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

25 голосов
/ 05 сентября 2011

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

from django.contrib.auth.models import User

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