0

ドキュメントの指示に従ってUserProfileモデルを作成しましたが、ビューから保存する値を渡すにはどうすればよいですか。これは私の見解がどのように見えるかです:

if request.method == 'POST':
    form = RegistrationForm(request.POST)
    if form.is_valid():
        now = timezone.now()
        user = User.objects.create(
            username     = form.cleaned_data['username'],
            first_name   = form.cleaned_data['username'],
            last_name    = form.cleaned_data['username'],
            email        = form.cleaned_data['email'],
            is_staff     = False,
            is_active    = False,
            is_superuser = False,
            last_login   = now,
            date_joined  = now
        )

    user.set_password(form.cleaned_data['password'])
    user.save()
4

2 に答える 2

2

アップデート1

Userモデルでpost_save()シグナルを使用してUserProfileオブジェクトを作成しているため、user.save()を呼び出した後、新しく作成されたプロファイルユーザーにアクセスできます。

profile = user.get_profile()
profile.verified = False
profile.ip_address = get_client_ip()
profile.save()

私はあなたがあなたの中にUserProfileモデルを持っていると思いますmodels.py

## Create a forms.py file inside your app and define an UserProfileForm similar to this

from django.forms import ModelForm

## using relative import because it's good practice, and I don't know what's name of your app
from .models import UserProfile

class UserProfileForm(ModelForm)
    class Meta:
        model = UserProfile
        exclude = ("user",)


## In views.py

if request.method == 'POST':
    form = RegistrationForm(request.POST)
    profile_form = UserProfileForm(request.POST)
    if form.is_valid() and profile_form.is_valid():
        now = timezone.now()
        user = User.objects.create(
            username     = form.cleaned_data['username'],
            first_name   = form.cleaned_data['username'],
            last_name    = form.cleaned_data['username'],
            email        = form.cleaned_data['email'],
            is_staff     = False,
            is_active    = False,
            is_superuser = False,
            last_login   = now,
            date_joined  = now
        )

    user.set_password(form.cleaned_data['password'])
    user.save()
    profile = profile_form.save(commit=False)
    profile.user = user
    profile.save()

RegistrationFormただし、初期化して検証した後でも、なぜ使用しないのかわかりません。

于 2013-01-20T20:30:59.167 に答える
0

リクエストがPOSTの場合、すべてのフォームデータが収集され、ディクショナリに渡すだけでビューに戻すことができます。

d=dict(username=form.cleaned_data["username"]), ... )
...
return render_to_resopnse("mytemplate.html", d, context_instance)
于 2013-01-20T19:54:33.513 に答える