14

我正在使用 Django 1.11

我创建了一个Form并使用Class based view来创建记录并保存到数据库。

业务/models.py

class BusinessType(models.Model):
    title = models.CharField(max_length=100)
    created = models.DateTimeField('date created', auto_now_add=True)
    modified = models.DateTimeField('last modified', auto_now=True)

    class Meta:
        db_table = 'business_types'

    def __str__(self):
        return self.title


class Business(models.Model):
    user = models.ForeignKey(User, on_delete=models.CASCADE)
    name = models.CharField(max_length=200)
    business_type = models.ForeignKey(BusinessType, on_delete=models.CASCADE)
    created = models.DateTimeField('date created', auto_now_add=True)
    modified = models.DateTimeField('last modified', auto_now=True)

    class Meta:
        verbose_name = 'business'
        verbose_name_plural = 'businesses'
        db_table = 'businesses'

    def __str__(self):
        return self.name

业务/Forms.py

class BusinessForm(ModelForm):
    class Meta:
        model = Business
        fields = ['user']

业务/views.py

class BusinessCreate(LoginRequiredMixin, CreateView):
    model = Business
    form = BusinessForm

    def form_valid(self, form):
        messages.success(self.request, 'form is valid')
        form.instance.user = self.request.user
        form.save()

    def get_success_url(self):
        messages.success(self.request, 'Business Added Successfully')
        return reverse('business:list')

在加载它的模板时BusinessCreate会出现错误

禁止使用不带 'fields' 属性的 ModelFormMixin(BusinessCreate 的基类)。

我的试炼

移至fieldsviews class,它工作正常。但我不想这样做,因为我可能会在多个视图上使用此表单,因此如果需要,将来需要在多个页面上进行更改。

4

2 回答 2

20

您的表格未被识别。这是因为你曾经form在视图中设置了属性,但是正确的属性是form_class.

(注意,如果你正确设置了form_class,你也不需要model。)

于 2017-10-12T06:12:55.860 回答
7

对我来说,它是通过添加像这样的字段变量来修复的

model = xxxxxxxxxx fields = '__all__'

在型号名称之后

参考这个网址

于 2019-09-21T20:38:45.657 回答