Django子类化UserProfile问题

时间:2011-03-02 16:43:34

标签: database django django-models

鉴于代码:

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关系使用相同的表。

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

错误的原因是您使用相同的user_id创建两个UserProfile。您正在使用“多表继承”,因此您只需调用AppUserProfile.objects.get_or_create(user = user),它将按预期工作。

Django Models的文档解释得非常好。