“您好,我需要的是在一个模型(Historico)中添加一条记录,并以相同的形式更新另一个模型(Factura)中记录的状态。但是,我在控制台中得到了一个302错误。
[23/Apr/2023 18:02:40]“POST /facturas/actualizar/1 HTTP/1.1”302 0
这是我的表格:
class FormActualizarFactura(forms.ModelForm):
comentario = forms.CharField(widget=forms.Textarea)
class Meta:
model = Factura
fields = ('estado', 'etapa', 'email', 'comentario')
这是我的观点:
class ActualizarFactura(UpdateView):
model = Factura
form_class = FormActualizarFactura
template_name = 'facturas/fac_actualizar.html'
success_url = reverse_lazy('facturas:listaFacturas')
def post(self, request, *args, **kwargs):
try:
if super().post(request, *args, **kwargs):
historico = Historico()
historico.factura = isinstance(self.object, Factura) and self.object or None
historico.estado = self.object.estado
historico.user = request.user
historico.comentario = request.POST.get('comentario')
historico.save()
else:
# Se produjo un error al actualizar la factura
messages.error(request, f'Error al actualizar la factura: {self.object.NFactura}')
except Exception as e:
# Se produjo un error general
messages.error(request, f'Error general: {e}')
return redirect('facturas:listaFacturas')
你能帮助我吗?或者我应该实现另一种方法来拥有两个单独的表单(但在单个HTML表单中验证),并且每个表单都在TemplateView中执行其功能?“
更新一个模型中记录的状态,并将其添加到Historico表中,所有这些都来自同一个表单。
1条答案
按热度按时间kupeojn61#
我对django不是很熟悉,但是我知道HTTP代码302不是错误。这只是一个重定向。您应该检查发送的实际响应,因为它可能包含
Location: http://example.com
报头。编辑:
问题是你在post请求中返回了一个重定向。如果你使用某种客户端来发送post请求,并且它没有跟随Location头,那么这就是你的问题。看起来你的后端一切都很好。