鉴于代码:
from django.contrib.auth.models import User
class UserProfile(models.Model):
# project userprofile, also set as AUTH_PROFILE_MODULE
user = models.ForeignKey(User, unique=True)
class AppUserProfile(UserProfile):
# some app specific extension
和测试:
user = User.objects.create()
profile = UserProfile.objects.get_or_create(user=user)
AppUserProfile.objects.create(user=user)
它在最后一行失败,说:
IntegrityError: column user_id is not unique
我怀疑Django对ForeignKey定义的user-userprofile和user-anotheruserprofile关系使用相同的表。
我该如何解决这个问题?
答案 0 :(得分:1)
错误的原因是您使用相同的user_id创建两个UserProfile。您正在使用“多表继承”,因此您只需调用AppUserProfile.objects.get_or_create(user = user),它将按预期工作。
Django Models的文档解释得非常好。