Django - 用户模型的外键

时间:2011-09-05 14:41:44

标签: django foreign-keys user-registration

我想创建新模型,例如:

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

但是当我尝试syncdb时,我收到此错误消息:

  

“AttributeError:'unicode'对象没有属性'_meta'”

当我查看一些教程时,一切似乎与我的模型中的相同,并且从未提及“_meta”的问题。

2 个答案:

答案 0 :(得分:34)

更安全的方法是使用设置文件中的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,无需您执行任何操作。

此方法的优势即使您未经修改就使用自定义用户模型,您的应用仍将继续有效。

有关如何使用自定义用户模型check out this part of the Django docs

的详细信息

答案 1 :(得分:25)

你只想:

from django.contrib.auth.models import User

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