我正在制作一个网页,并且有一个联系部分,我正在其中寻找人们留言,然后与他们联系,我希望将表单中输入的信息存储在数据库中,以便以后我可以在Django管理页面中看到它。
SELECT a.name,
ROUND(AVG(CASE WHEN c.rating IS NULL THEN 1 ELSE c.rating END )) AS rating,
a.etc,b.etc,a.personid
FROM person a
JOIN bid b ON b.personid=a.personid
LEFT JOIN rating c ON c.bidid=b.bidid
GROUP BY a.personid
我进行了几次尝试,但无法获取显示在管理员中的信息(我已经在管理员中注册了模型)。 请帮我:(
答案 0 :(得分:0)
您需要致电form.save()
,以便保存您的数据。目前尚未保存。在form.is_valid():
块中调用它。
此外,您不需要传递表单值。您可以使用form.data.field_name
来访问它们。
答案 1 :(得分:0)
好吧,因为您没有使用 ModelForm ,所以您需要在视图中手动保存这些值。像这样:
def post(self, request):
form = ContactForm(request.POST)
if form.is_valid():
name = form.cleaned_data['name']
email = form.cleaned_data['email']
issue = form.cleaned_data['issue']
text = form.cleaned_data['text']
args = {
'form': form,
'name': name,
'email': email,
'issue': issue,
'text': text,
}
Contact.objects.create(**args) # <-- saving to DB
# rest of the code
我不确定您为什么要使用TemplateView,因为FormView更适合处理表单。例如:
class ContactView(FormView):
form_class = ContactForm
template_name = 'contact/contact.html'
success_url= '/'
def form_valid(self, form):
name = form.cleaned_data['name']
email = form.cleaned_data['email']
issue = form.cleaned_data['issue']
text = form.cleaned_data['text']
args = {
'form': form,
'name': name,
'email': email,
'issue': issue,
'text': text,
}
Contact.objects.create(**args)
return super(ContactView).form_valid(form)
此外,如果您使用ModelForm,则可以像这样简单地存储数据:
class ContactForm(forms.ModelForm):
class Meta:
model = Contact
fields = "__all__"
# usage
if form.is_valid():
form.save()
# rest of the code