簡體   English   中英

在Django中使bool保持真或假

[英]Making a bool stay either true or false in Django

在我的代碼中,我通過向用戶發送電子郵件詢問他們是否要通過向他們發送兩個鏈接來確認或拒絕訂單(使bool變為false或true)。 唯一的問題是,他們可以通過單擊true然后單擊false true然后false,等等來不斷更改bool。我希望如果他們單擊真正的鏈接,他們就不能返回並使其變為false。

這是views.py中的代碼:

def confirm(request, itemnum):
        item = get_object_or_404(PurchaseOrder, item_number = itemnum)
        item.confirmed = True
        item.save()
        confirm_title = 'Purchase Order %s Confirmed' % item.product
        send_mail(confirm_title, 'Check the Product Order System to see the updated list.', 'MyEmail@gmail.com',['YourEmail@gmail.com'], fail_silently=False)
        return HttpResponse('Product  %s  confirmed' % item.product )

def deny(request, itemnum):
        item = get_object_or_404 (PurchaseOrder, item_number = itemnum)
        item.confirmed = False
        item.save()
        deny_title = 'Purchase Order %s Denied' % item.product
        send_mail(deny_title, 'Check the Product Order System to see the updated list.', 'MyEmail.com', ['YourEmail@gmail.com'], fail_silently = False)
        return HttpResponse('Product  %s denied' % item.product)

我將使用NullBooleanField處理此NullBooleanField ,在確認或拒絕之前將值初始化為None ,然后在confirm和deny視圖中檢測非None值,並提供您想要嘗試更改狀態的任何響應。 我可能會返回一個頁面,上面寫着“產品%s已經被確認”之類的東西,具體取決於它的狀態,但顯然這取決於你的情況。

其他解決方案當然是可能的 - 如果您預計會變得更復雜,那么Status模型的外鍵可能是個好主意。

Peter的答案的另一種選擇是有兩個布爾字段,第一個是你現在正在處理的字段,第二個叫做HasResponded 然后,當用戶單擊該鏈接時,該視圖將執行以下操作:

if instance.HasResponded:
    return render(request, 'already-responded.html',)
else:
    instance.HasResponded = True;
    instance.Bool = response
    instance.save()
    return render(request, 'template.html',)

只是給你一些選擇。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM