Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 多条消息。Django错误_Python_Django - Fatal编程技术网

Python 多条消息。Django错误

Python 多条消息。Django错误,python,django,Python,Django,我想用Django消息捕捉不正确的信息。我有一条消息。错误可以正常工作,但当我添加更多潜在消息时,它们将无法工作。这是我的密码: def order_approve(request): if request.method == 'POST': form = Approved(request.POST or None) success = False if form.is_valid: order = req

我想用Django消息捕捉不正确的信息。我有一条
消息。错误
可以正常工作,但当我添加更多潜在消息时,它们将无法工作。这是我的密码:

def order_approve(request):
    if request.method == 'POST':
        form = Approved(request.POST or None)
        success = False
        if form.is_valid:    

            order = request.POST.get('order')
            department = request.POST.get('department')
            name = request.POST.get('name')
            notes = request.POST.get('notes')
            check = department
            if check == 'wrong': #I have a column that is '-----' for placeholding
                messages.error(request, 'Please select a valid department')
            else:
                if department == 'sales':
                    approved = PDFStat.objects.filter(quote_num=order).values_list('sales_approved', flat=True)
                    if approved == True:
                        messages.error(requet, order + ' has already been approved by Sales')
                    else:
                        PDFStat.objects.select_related().filter(quote_num=order).update(
                            sales_name = name, sales_approved = True,
                            sales_date=datetime.today())
                        HomeTable.objects.filter(quote_num=order).update(
                            last_app = 'Sales')
                        if notes != '':
                            object1 = PDFStat.objects.select_related().filter(quote_num=order)
                            for a in object1:
                                if a.sales_notes == None:
                                    PDFStat.objects.select_related().filter(quote_num=order).update(
                                        sales_notes = notes)
                                else:
                                    a.sales_notes = a.sales_notes + " " + notes
                                    a.save()
        messages.success(request, 'The quote has successfully been approved by ' + name + ' in ' + department)
        form = Approved()
        success = True
        return render(request, 'approved.html', {'form': form})

    else:
        form = Approved()
    return render(request, 'approved.html', {'form': form})
我的第一条
消息。error
可以正常工作,但当它涉及到
if approved==True
时,不管它是真是假(在我的数据库中),它都会移动到else。我做错了什么?所有对象都在获取正确的数据

谢谢你的帮助

 messages.error(requet, order + ' has already been approved by Sales').
“请求”应为“请求”

字符串连接应该是

messages.error(request, '{0} has already been approved by Sales'.format(order)).
这将返回一个值查询集,例如
[True,]
。将其与
True
进行比较将始终返回False

也许你想要这样的东西:

pdf_stat = PDFStat.objects.get(quote_num=order)
approved = pdf_stat.sales_approved

注意:当没有与
get()
匹配的行或多行时,您可能需要额外的代码来处理这种情况

那是一个相当大的视野。Django的理念是“瘦视图,胖模型”,这意味着您应该尝试将业务逻辑保留在模型中,在这种情况下,我认为将
else
子句下的所有内容重构为函数将使您受益匪浅。不管是哪种方式,你最好的选择是在视图的顶部插入一个断点,然后逐步执行,看看你是否真正达到了预期的位置。我搞砸了,完全忘记了其中的查询部分。我没有使用第二个
get()
,而是在获得批准的情况下使用了
[0]
,这似乎很有效。谢谢很高兴你让它工作了。我建议您更改代码,使
approved
确实是
True
False
,而不是在批准时使用
[0]
。如果您今天对
approved=[True]
感到困惑,那么将来可能会让其他人(甚至是您)感到困惑。
pdf_stat = PDFStat.objects.get(quote_num=order)
approved = pdf_stat.sales_approved