使用 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 中删除条目
我创建了一个模型 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 中删除条目