我正在尝试创建个人资料系统,其中我的用户django用户名将是他们在网站上的用户名,并且还允许他们创建生物。但是,当我尝试迁移时,我收到此错误:
AttributeError: 'OneToOneField' object has no attribute 'model'
这是我的models.py文件:
from django.db import models
from django.contrib.auth.models import User
class UserProfile(models.Model):
user = models.OneToOneField(User, unique=True)
bio = models.TextField(null=True)
slug = models.SlugField(default=user)
def __unicode__(self):
return "%s's profile" % self.user
def create_profile(sender, instance, created, **kwargs):
if created:
profile, created = UserProfile.objects.get_or_create(user=instance)
# Signal while saving user
from django.db.models.signals import post_save
post_save.connect(create_profile, sender=User)
这是我的admin.py:
from django.contrib import admin
from profiles.models import UserProfile
class UserProfileAdmin(admin.ModelAdmin):
list_display = ["user"]
admin.site.register(UserProfile, UserProfileAdmin)
任何人都知道问题是什么?谢谢。
答案 0 :(得分:0)
尝试不从User
导入django.contrib.auth
模型。
删除(或注释掉)User
导入行,信号绑定,并在OneToOneField
中切换到基于字符串的关系模型规范。可以找到基于字符串的关系规范的示例in the docs。
这看起来像一个循环依赖的东西。
如果您仍然收到错误,请尝试从INSTALLED_APPS
删除不需要的内容。