Django - 用户模型的外键

Mep*_*eph 16 django foreign-keys user-registration

我想创建新模型,例如:

user_name = models.ForeignKey(u"Username", User),
Run Code Online (Sandbox Code Playgroud)

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

"AttributeError:'unicode'对象没有属性'_meta'"

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

小智 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)
Run Code Online (Sandbox Code Playgroud)

默认情况下settings.AUTH_USER_MODEL是指django.contrib.auth.models.User不需要你做任何事情.

这种方法的优点是,即使您使用自定义用户模型而未经修改,您的应用仍将继续工作.

有关如何使用自定义用户模型的更多信息,请查看Django文档的这一部分


Joe*_*Joe 25

你只想要:

from django.contrib.auth.models import User

class MyModel(models.Model):
    ...
    user = models.ForeignKey(User)
    ...
Run Code Online (Sandbox Code Playgroud)

  • 您需要在文件顶部添加"来自django.contrib.auth.models导入用户". (3认同)
  • 然后,您需要发布完整的模型. (2认同)