tim*_*tim 78 django django-models
我有一个问题.在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
Run Code Online (Sandbox Code Playgroud)
但它不起作用: ImportError: cannot import name user
怎么解决?
所以,我想在db中创建一个新表"workers",它OneToOne
与表"auth_user" 有关系.谢谢.
Tho*_*rzl 182
from django.contrib.auth.models import User
Run Code Online (Sandbox Code Playgroud)
你错过了模型 - 用户资本化.
如果您使用自定义用户模型,则应使用:
from django.contrib.auth import get_user_model
User = get_user_model()
Run Code Online (Sandbox Code Playgroud)
更多细节可以在文档中找到.
在Django 1.11中更改:
添加了在导入时调用get_user_model()的功能.
Cia*_*ims 64
如果您使用的是自定义用户模型,请执行以下操作以引用它:
from django.contrib.auth import get_user_model
User = get_user_model()
Run Code Online (Sandbox Code Playgroud)
或者如果在外键或多对多关系中使用它:
from django.conf import settings
....
user = models.ForeignKey(settings.AUTH_USER_MODEL)
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
73972 次 |
最近记录: |