首页 > 解决方案 > Python Django:填写表单字段总是在POST上抛出错误“此字段是必需的”

问题描述

我有一个表单,其中只包含一个文本框和一个提交按钮。每次我填写文本框并尝试提交表单验证失败并抛出错误消息“此字段为必填项”。

add_stock.html

{% extends 'base.html' %}
{% block content %}

<h1>Add Stock</h1>
<form action="{% url 'add_stock' %}"  method="POST" enctype="multipart/form-data">
    {% csrf_token %}
  <input class="form-control" type="text" id="ticker">
  <button type="submit" class="btn btn-primary">Add</button>
</form>

{{ form.errors }}
{% endblock %}

视图.py

def add_stock(request):
    if request.method == 'POST':
        form = StockForm(request.POST or None)

        if form.is_valid():
            form.save()
            messages.success(request, ('Stock has been added'))
            return redirect('overview') 
        return render(request, 'add_stock.html', {'form':form}) 
    return render(request, 'add_stock.html', {}) 

模型.py

from django.db import models

class Stock(models.Model):
    ticker = models.CharField(max_length=10)
    #trade_date = models.DateField(blank=True, default='')
    #quantity = models.IntegerField(blank=True, default='')
    #unit_price = models.DecimalField(max_digits=8, decimal_places=2, blank=True, default='')
    #brokerage = models.DecimalField(max_digits=3, decimal_places=2, blank=True, default='')

    def __str__(self):
        return self.ticker

表格.py

from django import forms
from .models import Stock

class StockForm(forms.ModelForm):
    class Meta:
        model = Stock
        fields =  ["ticker"]
        #fields =  ["ticker", "trade_date", "quantity", "unit_price", "brokerage"]

错误信息

标签: pythondjangoforms

解决方案


你应该设置name属性

  <input class="form-control" type="text" name="ticker" id="ticker">

推荐阅读