2012-02-28 20 views
0

こんにちは、私は新しいユーザーを追加するときにユーザープロファイルオブジェクトを追加しようとしていますが、「ユーザー」インスタンスには常に多対一の前に主キー値が必要です。多くの関係を使用することができます。エラー。ここで新しいユーザーを追加するときにUser Profileオブジェクトを追加する

私のユーザー・プロファイル・クラスと管理クラスは、以下のとおりです。

class User_Profile(models.Model): 
    user    = models.OneToOneField(User) 
    country    = models.ForeignKey(Country) 
    phone_number  = models.CharField(max_length=16) 

    class Meta: 
     db_table = 'user_profile' 
     unique_together = ('user', 'country') 

    def __unicode__(self): 
     return self.user.username 

class UserProfileInline(admin.StackedInline): 
    model = User_Profile 

class UserProfileAdmin(UserAdmin): 
    add_form = AddUserForm 
    fieldsets = (
     (None, {'fields': ('username',)}), 
     (('Personal info'), {'fields': ('first_name', 'last_name', 'email')}), 
     (('Permissions'), {'fields': ('is_active', 'is_staff', 'is_superuser')}), 
     (('Groups'), {'fields': ('groups',)}), 
    ) 
    add_fieldsets = (
     (None, { 
      'classes': ('wide',), 
      'fields': ('username', 'email', 'password1', 'password2')} 
     ), 
     (('Permissions'), {'fields': ('is_active', 'is_staff', 'is_superuser')}), 
     (('Groups'), {'fields': ('groups',)}), 
    ) 
    inlines = [UserProfileInline] 

    def save_model(self, request, obj, form, change): 
     new_user = request.user 
     new_user.save() 
     user_profile = new_user.get_profile() 
     user_profile.user = new_user 
     user_profile.country = request.POST['country'] 
     user_profile.country = request.POST['phone_number'] 
     user_profile.save() 

答えて

0
user = models.OneToOneField(User,primary_key = True) 

多分uは次のように行う必要があります。

+0

wow。そのトリックをした。おかげで 私はsave_modelビット 'デフsave_model(自己、リクエスト、OBJ、フォーム、変化する)を変更する必要が:= OBJ new_user.save new_userを() してみてください。 USER_PROFILE = new_user.get_profile() user_profile.save() を除くUser_Profile.DoesNotExist: user_profile = User_Profile(user = new_user、country = Country.objects.get(pk = request.POST ['user_profile-0-country'])、phone_number = request.POST [ 'user_profile-0-phone_number']) user_profile.save(force_insert = True) ' – fawx

関連する問題