【问题标题】:Making a bool stay either true or false in Django在 Django 中使布尔值保持真或假
【发布时间】:2013-08-06 18:18:30
【问题描述】:

在我的代码中,我向用户发送电子邮件,询问他们是否要通过向他们发送两个链接来确认或拒绝订单(使 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)

【问题讨论】:

  • 你想阻止他们返回,还是阻止他们改变布尔值?或者你都可以吗?
  • 我希望通过电子邮件发送链接的人能够确认或拒绝一次。在他们做出真假之后,他们不能回去改变它。

标签: python django email boolean


【解决方案1】:

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',)

只是给你一些选择。

【讨论】:

  • 抱歉,我是 Python 新手。那么,我会用上面说的代码把它放在我的views.py中吗? Bool 会为我提供 instance.confirmed 吗?
  • 在我编写的代码中,instance 是您正在处理的对象的实例。这就是您在上面的代码中写成item 的内容。是的,我写的instance.Bool 就是你所说的item.confirmed。因此,您只需将字段HasResponded 或(更恰当地)has_responded 添加到您的模型(“PurchaseOrder”)。我上面给出的示例应该在您的视野中。
【解决方案2】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-29
    • 2013-07-29
    • 2020-01-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多