如何在vi中保存模型中的表单字段

2024-05-23 23:38:46 发布

您现在位置:Python中文网/ 问答频道 /正文

我是新手。我的应用程序中有一个带有以下代码的表单:

/app/forms.py <==

from django import forms


class ContactForm(forms.Form):
    name = forms.CharField(max_length=100)
    family = forms.CharField(max_length=250)
    phone = forms.IntegerField(max_value=12)
    state= forms.CharField(max_length=50)
    agreed= forms.BooleanField(initial=True)
    why = forms.CharField(max_length=50)

这是我的模型:

class ContactModel(models.Model):
    name = models.CharField(max_length=100)
    family = models.CharField(max_length=250)
    phone = models.IntegerField(max_length=12)
    state= models.CharField(max_length=50)
    agreed= models.BooleanField(default=True)
    why = models.CharField(max_length=50)


    def __str__(self):
        return self.name + "  "  + self.family

我的观点是:

def contact(request):
    if request.method == 'post':
        form = ContactForm(request.POST)

        if form.is_valid():
            cd = form.cleaned_data

            ==> "i dont what can i do here !!!"


    else:
        form = ContactForm()

    return render(request, 'rango/contact.html', {'form': form})

现在我的问题是如何将输入的值保存到模型中。我知道,我可以用ModelForm来做,但我需要用表单来做


Tags: nameselfform表单modelsrequestphoneforms
1条回答
网友
1楼 · 发布于 2024-05-23 23:38:46

如果您真的想在没有ModelForm的情况下执行此操作,那么您必须自己创建一个ContactModel的实例,并将所有值赋给它

def contact(request):
    if request.method == 'post':
        form = ContactForm(request.POST)
        if form.is_valid():
            cd = form.cleaned_data
            obj = ContactModel()
            obj.name = cd['name']
            obj.family = cd['family']
            ...
            obj.save()

您也可以在cleaned_data上循环,而不是手动分配每个属性:

if form.is_valid():
    cd = form.cleaned_data
    obj = ContactModel()
    for key, value in cd.iteritems():
        setattr(obj, key, value)
    obj.save()

相关问题 更多 >