0

ビュー.py

def add_phone(request):
    phoneForm = PhoneForm()
    user = request.user
    phone = Phone_info.objects.get(user=2)
    phoneForm = PhoneForm(instance=phone)    
    phone.user=request.user
    if request.method=='POST':        
        phoneForm = PhoneForm(request.POST,request.user,instance=phone) 
        user=request.user       
        if phoneForm.is_valid():
            phone=phoneForm.save(commit=False)
            phone.user=request.user 
            phone.save()
        return redirect('/member/contact-list/')

models.py

class Phone_info(models.Model):
    user = models.ForeignKey(User, null=True)
    name1 = models.CharField('Name', max_length=100, null=True, blank=True)

フォーム.py

class PhoneForm(forms.ModelForm):

    class Meta:
        model = Phone_info

views.py では、ユーザーがフォームに渡されないため、form.is_valid() は発生していません。どの方法でユーザーをフォームに渡すことができますか。Google で同じことを検索していますが、何もわかりません。これ。

4

2 に答える 2

1

フォームを初期化するときにこれを行うことができます。

phoneForm = PhoneForm({'user':request.user.id})

そうすれば、リクエストをフォームに送信したユーザーを渡すことができます。

完全な方法は次のとおりです。

def add_phone(request):
    user = request.user
    phoneForm = PhoneForm({'user':user.id})
    if request.method=='POST':        
        phoneForm = PhoneForm(request.POST) 
        if phoneForm.is_valid():
            phone=phoneForm.save(commit=False)
            phone.save()
        return redirect('/member/contact-list/')

それが役に立てば幸い。

于 2013-05-06T15:16:30.527 に答える
0

いくつかを切り替えると、問題が解決するはずです

def add_phone(request):
    if request.method == 'POST':        
        phoneForm = PhoneForm(request.POST)
        phoneForm.user = request.user #if a phone has a user and a form has a     
        if phoneForm.is_valid():
            phone = phoneForm.save(commit=False)
            phone.save()
        return redirect('/member/contact-list/')

冗長なコードがあるため、多くのリファクタリングを行いました。ほとんどの参照を削除しましたrequest.user

于 2013-05-06T15:15:17.167 に答える