'ModelFormMetaclass'类型的参数不可迭代

时间:2020-08-10 08:52:27

标签: python django

请问我是django的初学者。当我在veiws.py中连接我的班级时,我得到了一个错误,但我并不清楚,但是当我不连接它时,它可以与班级一起工作

这是我的views.py

class AudioCreateView(LoginRequiredMixin, CreateView):
    login_url = 'main:login'
    model = Audio
    fields = AudioForm
    # fields = ['title','audio','author', 'categories']
    template_name = 'main/events/create_audio.html'

这是我的表格。py

class AudioForm(ModelForm):

    class Meta:
        model = Audio
        fields = ['id','title','audio','author', 'categories']
        # widgets = {
        #     'audio': forms.FileField(widget=forms.FileInput(attrs={'accept':'application/pdf'}))
        #

请,这是我尝试使用它时遇到的错误

File "C:\Users\Joe\Desktop\MYDJAN~1\PRIEST~1\env\lib\site-packages\django\forms\models.py", line 551, in modelform_factory
    return type(form)(class_name, (form,), form_class_attrs)
File "C:\Users\Joe\Desktop\MYDJAN~1\PRIEST~1\env\lib\site-packages\django\forms\models.py", line 256, in __new__
    apply_limit_choices_to=False,
File "C:\Users\Joe\Desktop\MYDJAN~1\PRIEST~1\env\lib\site-packages\django\forms\models.py", line 152, in fields_for_model
    if fields is not None and f.name not in fields:
TypeError: argument of type 'ModelFormMetaclass' is not iterable

有人可以帮我吗,我不明白为什么我会收到此错误

2 个答案:

答案 0 :(得分:0)

我不确定我是否理解您的问题。但是在您的CreateView中,您需要指定以下字段:

fields = ['id','title','audio','author', 'categories']

在小部件行中,您似乎也缺少结束符},即应该是:

 widgets = {
        'audio': forms.FileField(widget=forms.FileInput(attrs={'accept':'application/pdf'}))
           }

我不知道这是您的问题,还是仅仅是复制和粘贴错误?

答案 1 :(得分:0)

我认为问题是您在fields的{​​{1}}中传递的内容。 因为要使用CreateView,所以可以使用Modelform属性指定表单。

form_class