0

ユーザープロファイルに新しいフィールドを追加したいと思います。管理者側では機能しますが、フロントエンドでは保存されません...エラーが表示されないため、非常に好奇心が強く、保存するだけです。

次のコードでは、フィールド「CPF」をuserprofileに追加しました。フロントエンド形式で正しく表示された後、保存しようとします(ここで問題が発生します)

助けていただければ幸いです。

models.py

from django.db import models
from django.contrib.auth.models import User

...
cpf = models.CharField('CPF',max_length=14)
...

def __unicode__(self):
return self.cpf

forms.py

from django.contrib.auth.forms import UserCreationForm
from django import forms
from django.contrib.auth.models import User
from usuario.models import UserProfile


class cadastroForm(UserCreationForm):
...

cpf = forms.CharField(label='CPF')

class Meta:
    model = User
    fields = ("username", "cpf")


def save(self, commit=True):
    ...
    user.cpf = self.cleaned_data["cpf"]

    if commit:
        user.save()

    return user

views.py

def cadastro(request):
if request.method == 'POST':
    form = cadastroForm(request.POST)
    if form.is_valid():
        new_user = form.save()
        return HttpResponseRedirect("/")
else:
    form = cadastroForm()
return render_to_response("registration/registration.html", {
    'form': form,
})

admin.py(正常に動作しているため、変更する必要はありません)

from django.contrib import admin
from usuario.models import UserProfile
from django.contrib.auth.models import User
from django.contrib.auth.admin import UserAdmin as AuthUserAdmin

class UserProfileInline(admin.StackedInline):
model = UserProfile
max_num = 1
can_delete = False

class UserAdmin(AuthUserAdmin):
   inlines = [UserProfileInline]

admin.site.unregister(User)
admin.site.register(User, UserAdmin)
4

2 に答える 2

1

問題はコミット条件付きで、解決策は次のとおりです。

        if commit:            
           user.save()
           profile.user = user
           profile.save()
于 2011-06-28T16:37:18.873 に答える
0

すべてのコードを投稿しなかったので、わかりにくいです。すべてのコードを投稿して、それがどこかにタイプミスであるかどうかを確認し、モデルフォームでユーザーが何であるかを確認できるようにしてください。

モデルフォームのsaveメソッドでスーパーセーブを呼び出していますか?必要かどうか思い出せない。

実際のコードではなく単なる例

m = super(yourForm、self).save()

于 2011-06-25T12:38:37.350 に答える