当使用OneToOneField时,Django模型u'id'冲突

dot*_*ash 7 python django postgresql django-models

我创建了一个模型UserProfile来关联模型User.

我在做python manage.py makemigrations时遇到错误:

django.core.exceptions.FieldError:类'UserProfile'中的本地字段u'id'与基类'User'中类似名称的字段冲突

这是代码:

from django.contrib.auth.models import User
from django.db.models.signals import post_save

class UserProfile(models.Model):
    user = models.OneToOneField(User, related_name='user_of')
    description = models.TextField()

def create_user_profile(sender, instance, created, **kwargs):
    if created:
        profile, created = UserProfile.objects.get_or_create(user=instance)
post_save.connect(create_user_profile, sender=User)
Run Code Online (Sandbox Code Playgroud)

环境:Django 1.8.2,Python 2.7.6,PostgreSQL 9.4.2

那是一个错误吗?为什么'UserProfile'的'uid'与'User'的'u'id'发生冲突...

我试图在文件settings.py中添加一行:

AUTH_PROFILE_MODULE = 'user_profile.UserProfile'
Run Code Online (Sandbox Code Playgroud)

但无论是否有,这都无济于事.

如何解决这个问题?谢谢!

Dr *_*tan 7

你可能拥有的是一个旧的迁移,它曾经从有问题的模型中继承

要测试这一点,请克隆您的项目并删除所有迁移和makemigrations新的新数据库

如果它可以工作,那么从当前项目中追踪违规迁移,并且不要忘记从django_migrations表中删除条目