2016-04-18 10 views
1

私はdjangoの新しいプロジェクトを回避しようとしています。ここでDBがdjango形式で更新されない

は私のURLです:

url(r'^createreceivable/$',views.createreceivables,name = 'createreceivable'), 

私のviews.py

@login_required 
def createreceivables(request): 
    if request.method == 'POST': 
     rec_form = Receivablesforms(data=request.POST) 
     if rec_form.is_valid(): 
      rec_form.save() 
      return render(request,'account/dashboard.html') 
    else: 
     rec_form = Receivablesforms() 

    return render(request,'account/addreceivable.html',{'rec_form':rec_form}) 

マイmodel.py

class Receivables(models.Model): 
    user = models.ForeignKey(settings.AUTH_USER_MODEL) 
    receivable_name = models.CharField(max_length=250) 
    receivable_address = models.CharField(max_length=250,blank=True) 
    receivable_email = models.CharField(max_length=250,blank=True) 
    receivable_telephone = models.CharField(max_length=250,blank=True) 
    receivable_VAT = models.CharField(max_length=250,blank=True) 
    receivable_Service_Tax = models.CharField(max_length=250,blank=True) 
    receivable_PAN = models.CharField(max_length=250,blank=True) 

forms.py

class Receivablesforms(forms.ModelForm): 
    class Meta: 
     model = Receivables 
     exclude = ('user',) 

DBにデータが保存されていないことを除いて、すべてが完璧に機能します。ご案内ください。ユーザーを除外しているので

instance=request.user is not working 

テンプレートが

<form action="." method="post"> 
{{ rec_form }} 
{% csrf_token %} 
<p><input type="submit" value="Save Changes"</p> 
</form> 
+0

DBとしてMySQLを使用しています。 –

+0

フォームを使用するためのコードは何ですか? –

+0

@ShangWang更新された質問。 –

答えて

2

で、あなたが、何とかそれを取り戻す必要がありそうでない場合は、あなたのrec_form.save()あなたのモデルを充填するuserフィールドを必要とするため、例外を持っているでしょう。

トリックはsave(commit=False)です。メモリ内にオブジェクトが作成されますが、オブジェクトは保存されません。

if rec_form.is_valid(): 
    new_rec = rec_form.save(commit=False) 
    new_rec.user = request.user 
    new_rec.save() 

チェックDjangoのドキュメントをcommit=False in save() methodについて:あなたは、メモリ内のオブジェクトへuserを割り当て、それを再度保存する必要があります。

+0

その働き:どのように私はあなたに感謝しますか? –

関連する問題