2011-02-28 38 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