首页 > 解决方案 > 呈现的表单没有将任何输入保存到数据库中,为什么它不起作用?

问题描述

我尝试通过执行 Forms.py 向 ContactModel 添加验证,但我离它太远了,现在不知道要修复它。有人可以帮忙吗?

def addContact(request):

    form = ContactForm()
    if request.method == 'POST':
        form = ContactForm(request.POST)
        if form.is_valid():
            # form = Contact(
            # full_name = request.POST ('fullname'),
            # relationship = request.POST ('relationship'),
            # email = request.POST ('email'),
            # phone_number = request.POST ('phone-number'),
            # address = request.POST ('address'),
            # )
            form.save()
        return redirect('/contact')
    context = {'form': form}
    return render(request, 'contact/new.html', context)


def contactProfile(request,pk):
    contact = Contact.objects.get(id=pk)
    return render(request, 'contact/contact-profile.html', {'contact': contact})

在我看来,在视图中我有大麻烦。当我填满所有字段时,数据并没有发送到数据库。

表格.py:

from django.forms import ModelForm
from .models import Contact

class ContactForm(ModelForm):
    class Meta:
        model = Contact
        fields = '__all__'

模型.py:

from django.db import models

# Create your models here.
class Contact(models.Model):
    full_name = models.CharField(max_length=500)
    relationship = models.CharField(max_length=50)
    email = models.EmailField(max_length=254)
    phone_number =models.CharField(max_length=20)
    address = models.CharField(max_length=100)

    def __str__(self):
        return self.full_name

标签: pythondjango

解决方案


您的表单似乎无效,并且始终重定向到联系方式。仅当表单有效时才应使用重定向。否则,您将永远看不到您的表单包含哪些错误。

试试下面的代码:

def addContact(request):
    if request.method == 'POST':
        form = ContactForm(request.POST)
        if form.is_valid():
            form.save()
            return redirect('/contact')
     else:
        form = ContactForm()
    context = {'form': form}
    return render(request, 'contact/new.html', context)

推荐阅读