2016-04-25 20 views
0

這裏是我的臺詞處理兩種形式:Django。包含2倍略有不同的形式,但第二形式的數據被保存在兩個

user = request.user 

user_liked = user_liked_form.save(commit = False) 
user_liked.user = user 
user_liked.save() 

user_disliked = user_disliked_form.save(commit = False) 
user_disliked.user = user 
user_disliked.save() 

在第二表單提交的數據被保存在這兩個喜歡和不喜歡。

我已經在喜歡和不喜歡的模型中使用過用戶foreignkey。

下面是完整的功能:

def collect(request): 
context = RequestContext(request) 
submitted = False 

if request.method == 'POST': 
    data = request.POST 
    user_liked_form = UserLikedForm(data = request.POST) 
    user_disliked_form = UserDislikedForm(data = request.POST) 
    # user_id = data["user_id"] 
    user = request.user 

    if user_liked_form.is_valid() and user_disliked_form.is_valid(): 


     # user_liked_form.save(commit = True) 
     # user_disliked_form.save(commit = True) 

     user_liked = user_liked_form.save(commit = False) 
     user_liked.user = user 
     user_liked.save() 

     user_disliked = user_disliked_form.save(commit = False) 
     user_disliked.user = user 
     user_disliked.save() 

     submitted = True 

    else: 
     print user_liked_form.errors, user_disliked_form.errors 

else: 
    user_liked_form = UserLikedForm() 
    user_disliked_form = UserDislikedForm() 

return render_to_response(
    'collect.html', 
    {'user_liked_form': user_liked_form, 'user_disliked_form': user_disliked_form, 'submitted': submitted}, 
    context) 
+0

我有用戶作爲外鍵在這兩種模式。 – jakeN

+1

爲什麼不過去所有的'view'代碼?通常,除非你使用'formset',否則Django會在頁面上使用單個頁面,所以這很可能是原因。 –

回答

2

這聽起來像你UserLikedForm和UserDislikedForm具有相同的字段名稱和形式提交時,只有第二個值request.POST來通過。要解決此問題,您需要爲表單添加前綴:

user_liked_form = UserLikedForm(prefix='liked') 
user_disliked_form = UserDislikedForm(prefix='disliked') 

這樣,當表單呈現時,每個表單將具有唯一的字段名稱。

+1

以綁定和未綁定的形式設置前綴:'user_liked_form = UserLikedForm(request.POST,prefix ='likes')','user_liked_form = UserLikedForm(prefix ='likes')'。 – vsd

相關問題