首页 > 解决方案 > Django: form.is_valid() false

问题描述

我正在尝试将用户的输入保存到数据库。但我收到如下错误:

form.is_valid() = False. 

你们有什么想法,为什么这个代码会生成is_valid() == False

模型.py

class PortDateInit(models.Model): 

     start_date = models.DateField()
     end_date = models.DateField()

     def __str__(self):
     return f"from {self.start_date} to {self.end_date} " 

表格.py

class DateFrom(forms.ModelForm):

      start_date = forms.DateField(widget=NumberInput(attrs={"type": "date"}))
      end_date = forms.DateField(widget=NumberInput(attrs={"type": "date"}))

      class Meta:
          model = models.PortDateInit
          fields = "__all__"

视图.py

form_date = forms.DateFrom()

if request.method == "POST":
    form_date = forms.DateFrom(request.POST)
    print(form_date.is_valid())
    if form_date.is_valid():
        form_date.save()
        
context = {
    #"ticker_info": list_only_ticker,
    "form": form_date,

}

return render(request, "makeports/first1.html", context)

first1.html

{% block content %}
<form action ="" method="POST">
    {% csrf_token %}
    {{form}} 
    <input type="submit">
</form>

{% endblock content %}

标签: djangodjango-viewsdjango-forms

解决方案


你为什么使用 NumberInput 小部件?实际上,为什么在这种情况下需要一个小部件?我认为如果您只是将字段添加到表单元字段甚至使用 DateInput 小部件,它应该可以正常工作


推荐阅读