试图通过ModelForm Django保存到数据库



我的表单没有保存到数据库中,或者至少我知道表单无效,我只是不知道为什么?因为它总是会跳到if表单.is_valid((中的else(打印("不起作用!"(

视图.py:

def index(request):
component = Component.objects.all()
form = ComponentModelForm()
if request.method == 'POST':
form = ComponentModelForm(request.POST)
if form.is_valid():
form.save()
return redirect('/maintenance')
else:
form = ComponentModelForm()
print("didnt work!")
context = {
'components': component,
'form': form,
}
return render(request, 'maintenance/index.html', context)

forms.py:

class ComponentModelForm(forms.ModelForm):
note = forms.CharField(widget=forms.Textarea)
image = forms.ImageField(error_messages = {'invalid':("Image files only")}, widget=forms.FileInput)
class Meta:
model = Component
fields = ("name",
"manufacturer",
"model",
"serial_number",
"price",
"note",
"image",
"parent",)

模板形式:

{% load widget_tweaks %}
<form class="component-update-grid" enctype="multipart/form-data" method='POST' action=''>
{% csrf_token %}
<div class="component-form-data">
<span class="component-label-text">Name</span>
{% render_field form.name class="component-form-data-inputs"  %}
<span class="component-label-text">Manufacturer</span>
{% render_field form.manufacturer class="component-form-data-inputs"  %}
<span class="component-label-text">Model</span>
{% render_field form.model class="component-form-data-inputs"  %}
<span class="component-label-text">Serial Number</span>
{% render_field form.serial_number class="component-form-data-inputs"  %}
<span class="component-label-text">Price</span>
{% render_field form.price class="component-form-data-inputs"  %}
<span class="component-label-text">Note</span>
{% render_field form.note class="component-form-data-inputs"  %}
{% render_field form.parent class="component-form-data-inputs "  %}
<input type="submit" class="button1" value='Create Component' />
</div>
<div class="component-form-img">
<img class="maintenance-component-img" src='{%static 'imgs/sidebar/logo.png'%} ' />
{% render_field form.image  %}
</div>
</form>

当表单失败时,您不应该构建新表单:失败的表单将呈现错误,这样用户就知道出了什么问题,所以:

def index(request):
component = Component.objects.all()
form = ComponentModelForm()
if request.method == 'POST':
form = ComponentModelForm(request.POST)
if form.is_valid():
form.save()
return redirect('/maintenance')
else:
# Don't create a new form!
print("didnt work!")
context = {
'components': component,
'form': form,
}
return render(request, 'maintenance/index.html', context)

最新更新