0

在我的代码中,我向用户发送电子邮件,询问他们是否要通过向他们发送两个链接来确认或拒绝订单(使 bool 为 false 或 true)。唯一的问题是,他们可以通过单击 true 然后 false true 然后 false 等来不断更改布尔值。我希望它到哪里,如果他们单击 true 链接,他们就不能返回并使其为 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)
4

2 回答 2

1

彼得回答的另一种选择是有两个布尔字段,第一个是你现在正在处理的,第二个叫做HasResponded. 然后当用户单击链接时,视图会执行以下操作:

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

只是给你一些选择。

于 2013-08-06T18:26:38.760 回答
1

我将使用 a 来处理此问题NullBooleanField,在确认或拒绝之前将值初始化为None,然后在确认和拒绝视图中检测非None值,并在尝试更改状态时提供您想要给出的任何响应。我可能会根据其状态返回一个页面,上面写着“产品 %s 已被确认”之类的内容,但显然这取决于您的情况。

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

于 2013-08-06T18:22:32.827 回答