禁止在没有'fields'属性的情况下使用ModelFormMixin

Anu*_*TBE 7 django django-forms django-1.11

我正在使用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
Run Code Online (Sandbox Code Playgroud)

业务/Forms.py

class BusinessForm(ModelForm):
    class Meta:
        model = Business
        fields = ['user']
Run Code Online (Sandbox Code Playgroud)

业务/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')
Run Code Online (Sandbox Code Playgroud)

在加载BusinessCreate它的模板时给出错误为

禁止使用不带“字段”属性的ModelFormMixin(BusinessCreate的基类)。

我的试用

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

Dan*_*man 8

您的表格无法识别。这是因为您曾经form在视图中设置属性,但正确的属性是form_class。

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


Rub*_*nce 7

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

model = xxxxxxxxxx fields = '__all__'

型号名称后

参考这个网址