2011-02-27 50 views
1

你好,我有一個編輯項目的形式。從這個角度來看,看看item.current_item_status_date。表單提交時Django的問題:有一個問題,節省

def edit_item(request, client_id = 0, item_id = 0): 
    client = None 
    item = None 
    status = None 
    contact = None 
    status_id = request.POST.get('status_id', None) 
    contact_id = request.POST.get('contact_id', None) 
    save_item = request.POST.get('save_item', None) 
    save_status = request.POST.get('save_status', None) 

    try: 
     client = models.Client.objects.get(pk = client_id) 
     item = models.StorageItem.objects.get(pk = item_id) 
    except: 
     return HttpResponseNotFound() 
    try: 
     status = models.Status.objects.get(pk = status_id) 
     contact = models.Contact.objects.get(pk = contact_id) 
    except: 
     pass 
    if request.method == 'POST': 
     form = forms.ItemForm(request.POST, instance = item) 
     if form.is_valid() and save_item is not None: 
      item.current_item_status_date = date.today() 
      item.save() 
      form.save(True) 
      request.user.message_set.create(message = "Item {0} has been updated successfully.".format(item.tiptop_id)) 
      return HttpResponse("<script language=\"javascript\" type=\"text/javascript\">window.opener.location = window.opener.location; window.close();</script>") 

     if status is not None and contact is not None and save_status is not None: 
      current_status = models.ItemStatusHistory(item = item, contact = contact, status = status, 
                user = request.user) 
      current_status.save() 
      request.user.message_set.create(message = "Item status has been updated successfully.") 
    else: 
     form = forms.ItemForm(instance = item) 
    title = str(client) + ' : Edit Item' 
    status_list = models.Status.objects.all() 
    return render_to_response('edit_item.html', {'form':form, 'title':title, 'status_list':status_list, 'item':item}, context_instance = RequestContext(request)) 

current_item_status_date節省了今天的日期。但是,有一個小問題。在我的形式,我只希望它保存按鈕時,稱爲新的狀態 選擇。現在我的編輯項目表單正在做的是當選擇保存按鈕時它正在保存。我希望我的形式保存,只有當新狀態選擇此日期 - 不保存

以下是我在我的編輯訂單模板。

<td><input type="submit" name="save_status" value="new status"></td> 
<input type="submit" name="save_item" value="Save" onclick="validate_item(this.form)"> 

編輯::我已經做了這些變化。

#code 

if request.method == 'POST': 
    form = forms.ItemForm(request.POST, instance = item) 
    if form.is_valid() and save_item is not None: 
     form.save(True) 
     request.user.message_set.create(message = "Item {0} has been updated successfully.".format(item.tiptop_id)) 
     return HttpResponse("<script language=\"javascript\" type=\"text/javascript\">window.opener.location = window.opener.location; window.close();</script>") 
    if request.POST.get('save_status'): 
     item.current_item_status_date = date.today() 
     item.save() 
#code 

現在,通過執行此操作,當前項目狀態日期得到保存。但只有當我關閉窗體(這是一個窗體打開一個新窗口)。當我選擇狀態日期然後點擊保存時,它不會被保存。我認爲它沒有正確保存到current_item_status_date字段,而不是數據庫。當我點擊保存狀態時,我可以告訴它不工作,current_item_status字段不會更新。它只在我關閉表單並再次打開時更新。它將工作的唯一方法是如果表單重新從數據庫中獲取信息。

這就是我要找:

  • 點擊狀態日期應保存日期。
  • 點擊狀態日期,然後點擊保存應該保存日期。
  • 只需點擊保存不應保存狀態日期。

回答

0

form = forms.ItemForm卸下current_item_status_date領域似乎已經奏效。這樣它可以正確保存。

0

您的save_item專門檢查。將其更改爲save_status,如果我理解了您的問題,則應該沒問題。

if form.is_valid() and save_status is not None: 
+0

這裏的問題是,它影響'current_status'。不保存該部分。如果我做這個改變。 – Shehzad009 2011-02-27 15:20:39

+1

然後將其移到HttpResponse塊的上方。 – 2011-02-27 18:50:47