2016-06-06 2 views
0

У меня есть функция my django views для создания порядка, а в заказе есть номер заказа, привязанный к элементам.Номер заказа заселяет каждый раз, когда браузер перезагружен Django

Вот views.py

def summary(request): # Client View 
    context = {} 

    request_user = request.user 
    all_items = Cart.objects.filter(client=request_user, ordered=False) 
    print "ALL ITEM", all_items 

    client = request.user 
    # print "Client is ", client 
    location=request.user.signup.country 
    print "LOCATION ", location 

    if request.method == "POST": 
     if request.POST != "": 
      order_number = create_id() 
      print "ORDER NUMBER", order_number 
      # print "rp ", request.POST 
      account_bank_name = request.POST['account_bank_name'] 
      print "account_bank_name ", account_bank_name 
      amount_paid = request.POST['amount_paid'] 
      print "amount_paid " , amount_paid 
      deposit_slip_number = request.POST['deposit_slip_number'] 
      print "deposit_slip_number ", deposit_slip_number 
      payable = request.POST['payable'] 
      print "payable ", payable 

      item, created = Order.objects.get_or_create(order_number=order_number, client=client, location=location, account_bank_name=account_bank_name, amount_paid=amount_paid, deposit_slip_number=deposit_slip_number, payable=payable) 
      item.save() 

     order = Order.objects.filter(order_number = order_number) 
     print "ORDER", order 
     all_items.update(ordered = True, order = order[0]) 
     my_order = Order.objects.filter(client=request_user).filter(order_number=order_number) #Populate client's Order to template 

     tied_order = Cart.objects.filter(client=request_user, ordered=True, order=order) 
     print "TIED ORDER", tied_order 

     return render(request, "selly/summary.html", {'my_order': my_order, 'order': order, 'tied_order': tied_order, 'order_number': order_number}) 

Каждый раз, когда я перезагрузить браузер новый номер заказа создается.

Как я могу сделать порядковый номер фиксированной, даже если браузер перезагружается

ответ

0

Всегда перенаправлять после успешного POST, даже если он вернулся к той же странице.

item, created = Order.objects.get_or_create(order_number=order_number, client=client, location=location, account_bank_name=account_bank_name, amount_paid=amount_paid, deposit_slip_number=deposit_slip_number, payable=payable) 
item.save() 
return redirect('summary') 
0

Не делайте этого, это добавляет слишком много сложностей к простой проблеме. Создайте номер заказа, когда вы сохраните заказ в базе данных с помощью сигналов pre_save. Django 1.9 signals

Итак, добавьте сигнал pre_save с кодом create_id() в объект Order. Когда вы сохраняете ордер, запускается pre_save.

Смежные вопросы