数据不会使用基于分类的视图从 Django 表单提交到数据库

Data doesn't get submitted to database from Django forms using classed based views

我正在尝试为公司创建一个注册页面,整个流程在 Django 中使用 froms 时运行良好。虽然当我用数据填写表格并点击提交时,它会将我重定向到我的索引页面并且没有显示任何错误。但是当我检查 /admin 中的数据库时, object/data 没有提交。知道“错误”是什么吗?

我正在使用基于 class 的视图,并且我已经在 admin.py

中添加了我的模型
admin.site.register(Company)

我的 urls.py 路径如下所示:

path('createCompanyProfile/', CompanyFormView.as_view(), name = "createCompanyProfile"),

models.py:

class Company(models.Model):
    companyName = models.CharField(max_length = 145)
    description = models.TextField()
    websiteURL = models.CharField(max_length = 100)
    relationToDjango = models.TextField()
    phoneNumber = models.CharField(max_length = 11)
    email = models.CharField(max_length = 100)
    mainContact = models.CharField(max_length = 50)
    streetName = models.CharField(max_length = 45)
    houseNumber = models.CharField(max_length = 25)
    postalCode = models.CharField(max_length = 4)
    region = models.CharField(max_length = 45)    

    def __str__(self):
        return '{} {} {} {} {} {} {} {} {} {} {}'.format(self.companyName, self.description, self.websiteURL, self.relationToDjango, self.phoneNumber, self.email, self.mainContact, self.streetName, self.houseNumber, self.postalCode, self.region)


class CompanyForm(ModelForm):

    class Meta:
        model = Company
        fields = '__all__'

views.py:

class CompanyFormView(FormView):
    model = Company
    template_name = "company/createCompanyProfile.html"
    form_class = CompanyForm
    success_url = '/'

    def form_valid(self, form):
        return super(CompanyFormView, self).form_valid(form)

createCompanyProfile.html

<form method="POST">
    {% csrf_token %}
    {{ form.as_p}}
    <input type="submit" value="Create Profile">
</form>

您使用的 FormView 在提交的表单有效时不执行任何操作,因为它的设计思想是您将编写代码以在表单有效时执行操作(你没有)。因为你想用这个视图创建一个对象,所以你最好使用 CreateView [Django docs]:

from django.views.generic.edit import CreateView


class CompanyFormView(CreateView):
    model = Company
    template_name = "company/createCompanyProfile.html"
    form_class = CompanyForm
    success_url = '/'

views.py 文件中存在问题。您正在使用窗体视图。使用CreateView将数据保存到DB。

# import
from django.views.generic.edit import CreateView

#yor class
class CompanyFormView(CreateView):

     model = Company
     template_name = "company/createCompanyProfile.html"
     form_class = CompanyForm
     success_url = '/'