【问题标题】:Form data not saving data to database - Django表单数据未将数据保存到数据库 - Django
【发布时间】:2019-11-26 20:49:59
【问题描述】:

我无法将表单数据保存到数据库中,每次尝试都会出现不同的错误。

这是我的表单模型

    class Meta:
        model = Asistente
        exclude = ('evento',)
        widgets = {'nombre': forms.TextInput(attrs={'class': 'form-control'}),
                   'telefono': forms.TextInput(attrs={'class': 'form-control'}),
                   'num_asistentes': forms.TextInput(attrs={'class': 'form-control'})} 

这是我认为的代码。

    def post(self, request, evento_id):
        evento = Evento.objects.filter(id=evento_id).first()
        form = RegistroAsistenteForm(request.POST)

        if form.is_valid():
            registro_asistente = form.save(commit=False)
            registro_asistente.evento.pk = evento_id
            registro_asistente.save()
        else:
            form = RegistroAsistenteForm()

        return HttpResponseRedirect('/evento-reg/' + str(evento_id) + '/asistente/')```

There are times when I don't get any error, it just don't do anything.

【问题讨论】:

  • 因为你总是重定向,即使表单无效。你应该只在 is_valid 为真时重定向。但实际上,您根本不应该编写自己的 post 方法。使用为你做的表单视图。

标签: python django database forms


【解决方案1】:

你的视图应该看起来像

def post(request, evento_id):
    if request.method == 'POST':
       evento = Evento.objects.filter(id=evento_id).first()
       form = RegistroAsistenteForm(request.POST)
       if form.is_valid():
           registro_asistente.evento = evento
           form.save()
           #to get the id u can us form.instance.id
           return redirect('to what ever u want from you urls')

    else:
       form = RegistroAsistenteForm()

    return HttpResponseRedirect('/evento-reg/' + str(evento_id) + '/asistente/')```

这是在视图中收集您想要做的事情,它不需要自我

【讨论】:

  • 我现在收到此错误post() got multiple values for argument 'evento_id'
  • 你在 eventto_id 中传递了什么
猜你喜欢
  • 2021-10-07
  • 1970-01-01
  • 2017-03-06
  • 2018-05-16
  • 2021-08-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-02-16
相关资源
最近更新 更多