Django 在数据库中存储表单数据

Django 在数据库中存储表单数据,django,django-views,Django,Django Views,我不知道如何在数据库中存储一个简单的表单。我想我已经很接近了,但我的观点可能有问题。这是我的代码,知道我做错了什么吗?(另请参阅) #models.py 类别预测类别(models.Model): name=models.CharField(最大长度=30,唯一性=True) user=models.ForeignKey(user,null=True,blank=True) 类元: 详细\u名称\u复数=“信息类别” def ___; unicode(自): 返回self.name #forms

我不知道如何在数据库中存储一个简单的表单。我想我已经很接近了,但我的观点可能有问题。这是我的代码,知道我做错了什么吗?(另请参阅)

#models.py
类别预测类别(models.Model):
name=models.CharField(最大长度=30,唯一性=True)
user=models.ForeignKey(user,null=True,blank=True)
类元:
详细\u名称\u复数=“信息类别”
def ___; unicode(自):
返回self.name
#forms.py
类别形式(forms.Form):
name=forms.CharField(最大长度=30)
#views.py
@需要登录
def新类别(请求):
如果request.method==“POST”:
username=request.user.username
cform=CategoryForm(request.POST)
如果cform.is_有效():
formInstance=cform.save(commit=False)
formInstance.user=用户名
formInstance.name=cform.cleaned_数据['name']
formInstance=IngredienceCategory.objects.filter(名称=formInstance.name,用户=formInstance.user)
formInstance.save()
#返回HttpResponseRedirect('new-category/')
其他:
表单=类别表单()
上下文={'form':form}
返回render_to_响应('new-category.html',context,context_实例=RequestContext(request))
#new-category.html
插入新类别
{%csrf_令牌%}
{{form.as_p}}

您应该从ModelForm继承

从django.forms导入ModelForm 类别形式(模型形式): 类元: 模型=预测类别


有关如何呈现表单并将其保存到数据库的信息,请参阅。

以下行在当前位置不可用。在保存表单数据之前,该命令将执行数据库查询并将结果指定为查询集

formInstance =  IngredienceCategory.objects.filter(name=formInstance.name, user=formInstance.user)
这应该有效:

将cform作为标准形式:

if cform.is_valid():
    formInstance = IngredienceCategory(user=request.user, cform.cleaned_data['name'])
    formInstance.save()
如果cform是一个模型,您可以:

if cform.is_valid():
    formInstance = cform.save(commit=False)
    formInstance.user = request.user
    formInstance.save()

我建议您签出,因为它将基于您的模型构建清理功能。

如果要在数据库中存储表单数据,是否需要使用ModelForm?我想尝试这种方法(不使用ModelForm)。。。保存方法仅在ModelForms中可用。。。有了这些模型,上面的ModelForm子类将大致等同于此(唯一的区别是save()方法)只需使用ModelForm即可。您还可以隐藏不希望作为HTML表单一部分呈现的字段。如果没有模型表单,您需要通过创建IngredienceCategory实例手动将其保存到数据库中。因此,请从request.POST提取数据,并创建IngredienceCategory实例request.user应允许提取ng用户引用,您可以保存实例。
if cform.is_valid():
    formInstance = cform.save(commit=False)
    formInstance.user = request.user
    formInstance.save()