2011-02-28 62 views
0

你好,我有一個刪除訂單號的視圖。一旦字符串被刪除,網頁將重定向到客戶頁面,讓用戶知道訂單號碼已被刪除。有一個問題。我得到這個。Django的:String對象打印出無

Previous order None deleted

它說None,但我希望它表明,我已刪除的訂單號。這似乎是說沒有,因爲我已經刪除了訂單號,所以當它看起來順序編號列表,它無法找到該號碼。

編輯:這裏是解決方案。消息發送後應刪除訂單號。

def delete_confirmation(request, order_no = 0, service_type = 0): 
     order = None 
     count = 0 
     title = models.SERVICE_CHOICES[int(service_type) - 1][1] 
     #title = type[1] 
     order_number = request.session['order_number'] 
     try: 
      order = models.Order.objects.get(pk = order_no) 
      count = order.orderservicelist_set.count() 
      if request.POST.get('delete'): 
       request.user.message_set.create(message = "Previous order " + str(order_number.pk) + " deleted") 
       order_number.delete() 
       return HttpResponseRedirect(reverse(return_clients)) 

     except: 
      return HttpResponseRedirect(reverse(return_clients)) 
     return render_to_response('delete_order.html', {'order':order, 'title':title, 'count':count, 'order_no':order_no }, context_instance = RequestContext(request)) 
+0

也許ü可以保存記錄的ID只是刪除了。然後在你的字符串中顯示該id,如果刪除成功了? – darren 2011-02-28 10:15:32

回答

0

很粗心的錯誤。我爲什麼要寫order_number.delete()兩次?

if request.POST.get('delete'): 
    order_number.delete() # Why was this there? of course, if I have this it will delete till it gets to the next part where it informs the user which order number was deleted! 
    request.user.message_set.create(message = "Previous order " + str(order_number.pk) + " deleted") 
    order_number.delete() 

固定

+1

不要把這個作爲一個答案,只是相應地編輯你的問題。 – AndiDog 2011-02-28 10:36:53

0

一個是delete()做一個模型實例的事情是設置它的PK到None,因此,如果您嘗試並保存它,它會創建一個新的實例,而不是試圖更新舊(NO-更長期存在的)。

所以,簡單的解決方案:搶PK刪除之前。事實上,你可以只擺脫第一次調用delete你那裏的,因爲在創建消息之後再次調用它。

順便說一句,在創建消息的更好的方法是使用字符串格式化:

message = "Previous order %s deleted" % order_number.pk