Django: OneToOneField没有属性model

2 投票
1 回答
2675 浏览
提问于 2025-04-28 16:45

我正在尝试创建一个个人资料系统,让我的用户在网站上的用户名与他们的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)

有人知道问题出在哪里吗?谢谢。

暂无标签

1 个回答

0

试着不从 django.contrib.auth 导入 User 模型。

User 的导入行去掉(或者注释掉),还有信号绑定的部分也去掉,然后在 OneToOneField 中使用字符串来指定模型关系。关于如何用字符串指定关系的例子,可以在 文档中找到

这看起来像是一个循环依赖的问题。

如果你还是遇到错误,试着从 INSTALLED_APPS 中去掉一些不需要的内容。

撰写回答