Python 多条消息。Django错误
我想用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
消息。错误
可以正常工作,但当我添加更多潜在消息时,它们将无法工作。这是我的密码:
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