Python 在Django中使bool保持为真或假

Python 在Django中使bool保持为真或假,python,django,email,boolean,Python,Django,Email,Boolean,在我的代码中,我向用户发送电子邮件,询问他们是否希望通过向他们发送两个链接(使bool为false或true)来确认或拒绝订单。唯一的问题是,他们可以通过点击“真”然后“假”再点击“真”再点击“假”等方式不断更改布尔值。我想知道,如果他们点击“真”链接,他们不能返回并使其为假 下面是views.py中的代码: def confirm(request, itemnum): item = get_object_or_404(PurchaseOrder, item_number = i

在我的代码中,我向用户发送电子邮件,询问他们是否希望通过向他们发送两个链接(使bool为false或true)来确认或拒绝订单。唯一的问题是,他们可以通过点击“真”然后“假”再点击“真”再点击“假”等方式不断更改布尔值。我想知道,如果他们点击“真”链接,他们不能返回并使其为假

下面是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
处理此问题,在确认或拒绝之前将值初始化为
None
,然后在确认和拒绝视图中检测非
None
值,并在尝试更改状态时提供任何您想要的响应。我可能会返回一个页面,说“产品%s已被确认”之类的话,或者类似的话,这取决于它的状态,但显然这取决于您的情况


其他的解决方案当然是可能的——如果你预计会变得更复杂,那么状态模型的外键可能是一个好主意。

彼得答案的另一种选择是有两个布尔字段,第一个是你现在正在处理的字段,第二个名为
的字段已响应
。然后,当用户单击链接时,视图执行以下操作:

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

只是给你一些选择

你想阻止他们回去,还是阻止他们改变目标?或者你对这两者都没问题?我希望我通过电子邮件发送链接的人能够确认或拒绝一次。在他们将它设置为真或假之后,他们不能返回并更改它。很抱歉,我是Python新手。那么,我会用上面提到的代码将其放在我的views.py中吗?那么Bool会是instance.confirmation吗?在我编写的代码中,
instance
是您正在处理的对象的实例。这是您在上面的代码中编写的
。是的,我写的
instance.Bool
就是你所说的
item.confirmed
。因此,您只需将字段
hassresponsed
或(更恰当地说)
has\u responsed
添加到您的模型(“PurchaseOrder”)。我上面给出的样品应该在你看来。