【发布时间】:2020-09-10 06:37:31
【问题描述】:
我尝试为用户创建一个停车场表单,该表单将输入他们的 RFID 卡、他们的日志历史记录、车牌、姓名以及是否处于活动状态,但我无法获取 Django 表单以将其保存到数据库
这是我的models.py
from django.db import models
class data(models.Model):
RFID = models.CharField(max_length=10)
Name = models.CharField(max_length=10)
Log = models.TextField()
License_Plate = models.CharField(max_length=10)
Active = models.BooleanField(default=True)
我的forms.py
from django import forms
from .models import data # import data from models.py
class data_form(forms.ModelForm):
class Meta:
model = data
fields = ['RFID',
'Name', 'Log', 'License_Plate', 'Active']
class data_custom_form(forms.Form):
RFID = forms.CharField(
widget=forms.TextInput(attrs={'id': 'user-rfid'}),
)
Name = forms.CharField(widget=forms.TextInput(
attrs={'id': 'user-name',
'cols': 40,
'rows': 1
}))
Log = forms.CharField(
widget=forms.TextInput(attrs={'id': 'user-log'})
License_Plate = forms.DecimalField()
Active = forms.BooleanField()
我的views.py
from django.shortcuts import render
# Create your views here.
from .models import data
from .forms import data_custom_form
def custom_form_view(request):
custom_form = data_custom_form()
if request.method == 'POST':
custom_form = data_custom_form(request.POST)
if custom_form.is_valid():
print(custom_form.cleaned_data)
else:
print(custom_form.errors)
info = {
'form': custom_form
}
return render(request, 'parking.html', info)
还有我的模板
<DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>parking</title>
</head>
<body>
<form method="POST">
{% csrf_token %}
{{ form.as_p }}
<input type="submit" value="save">
</form>
</body>
</html>
当我检查数据库时,它没有保存到数据库中,但是当我检查 shell 时,它准确地打印出我输入的内容
但如果我使用data_form 并像这样编辑views.py:
def custom_form(request):
custom_form = data_form(request.POST or None)
if custom_form.is_valid():
custom_form.save()
custom_form = data_form()
info = {
'form': custom_form
}
return render(request, 'parking.html', info)
它保存到数据库中。任何帮助都会很棒
【问题讨论】:
标签: django