将数据从表单保存到Django管理数据库

时间:2018-04-10 19:07:19

标签: django

>>> django.__version__ '2.0.4' 我正在尝试使用名称和电子邮件创建一个简单的表单。 我看了这个链接 - https://docs.djangoproject.com/en/2.0/topics/forms/ 但我无法弄清楚如何从表单中保存数据。

forms.py

class SubscribeForm(forms.Form):
    your_name = forms.CharField(label='Your name', max_length=100)
    your_email = forms.EmailField(label='Your email', max_length=100)   

views.py

def subscribe(request):
    """
    View for form subscribe
    """
    if request.method == 'POST':
        form = SubscribeForm(request.POST)

        if form.is_valid():
            data_sub = form.save(commit=False)
            data_sub.save()
    else:
        form = SubscribeForm()

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

models.py

from django.db import models


class Subscriber(models.Model):
    name = models.CharField(max_length=255, blank=True, default="")
    email = models.EmailField(max_length=255)
    published_date = models.DateTimeField(blank=True, null=True)

    def __str__(self):
        return self.email

但是,data_sub = form.save是不对的,如果我正确理解它,因为我使用forms.Formform.cleaned_data - 我必须用来保存数据,但我不明白该怎么做。

我希望得到你的帮助,谢谢你。

2 个答案:

答案 0 :(得分:0)

class SubscribeForm(forms.ModelForm):
    model = Subscriber
    fields=['name','email']

答案 1 :(得分:0)

我正在编辑views.py

    if form.is_valid():
        obj = Subscriber()
        obj.name = form.cleaned_data['your_name']
        obj.email = form.cleaned_data['your_email']
        obj.save()
        return HttpResponseRedirect('/subscribe/thanks')

所有的工作。