使用 OneToOneField 时 Django 模型 u'id' 发生冲突

Django model u'id' clashes when using OneToOneField

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

我在执行 python manage.py makemigrations 时出错:

django.core.exceptions.FieldError: Local field u'id' in class 'UserProfile' clashes with field of similar name from base class '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)

环境:Django 1.8.2,Python 2.7.6,PostgreSQL 9.4.2

这是一个错误吗?为什么'UserProfile'的u'id'和'User'的u'id'冲突...

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

AUTH_PROFILE_MODULE = 'user_profile.UserProfile'

但是不管有没有都不管用。

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

您可能有一个旧的迁移,它曾经继承自有问题的模型

要对此进行测试,请克隆您的项目并删除所有迁移,然后 makemigrations 在一个全新的数据库上

如果有效,请从您当前的项目中追踪有问题的迁移,并且不要忘记从 django_migrations table 中删除条目