我打算查询一个值,然后在django视图中将该值加到1,但是当我尝试这样做时,总是得到一个错误
def atualizar(request, contador):
lista = factura.objects.filter(contador__contador=contador)
conta1 = factura.objects.filter(contador__contador=contador).order_by('-contar')[:1]
conta=conta1.values('contar') # this is value
cont=cliente.objects.filter(contador=contador).first()
if request.POST:
data1=request.POST['data1']
factura_nr=request.POST['factura_nr']
data2=request.POST['data2']
consumo=request.POST['consumo']
dados = factura(
contador=cont,
contar= conta +1, # to incremet here
consumo=consumo,
data1=data1,
data2=data2,
factura_nr=factura_nr
)
dados.save()
return render(request, 'tabela.html', {'lista': lista,'cont':cont ,'conta':conta})[enter image description here](https://i.stack.imgur.com/BdaMk.png)
2条答案
按热度按时间lsmepo6l1#
updated:values()返回一个行为类似于dict的查询集。简单地尝试
调试
print(conta)
,您将看到请在以后的帖子中添加错误跟踪
z9gpfhce2#
您可以确定最大值
contar
,然后将其递增1,如下所示:注意:Django中的模型是用 PascalCase 编写的,而不是 snake_case,所以你可能想把模型从
factura
重命名为Factura
。注意:最好使用
Form
[Django-doc],而不是手动进行数据校验和清洗。Form
不仅可以简化HTML中表单的渲染,还可以更方便地验证输入,并将数据清理为更方便的类型。注意:通常使用**
get_object_or_404(…)
[Django-doc]比直接使用.get(…)
[Django-doc]更好。如果对象不存在,例如因为用户自己更改了URL,则get_object_or_404(…)
将导致返回 HTTP 404 Not Found 响应,而使用.get(…)
将导致 HTTP 500 Server Error。注意:如果POST请求成功,需要创建
redirect
**[Django-doc]来实现Post/Redirect/Get pattern [wiki]。这样可以避免在用户刷新浏览器时发出相同的POST请求。