Django UpdateView表单

Django UpdateView forms

我有一个看起来像……

1
2
3
4
5
#forms.py

class ExampleForm(forms.Form):
    color = forms.CharField(max_length=25)
    description = forms.CharField(widget=forms.Textarea, max_lenght=2500)

我的观点是这样的……

1
2
3
4
5
6
7
8
9
10
11
#views.py



class EditExample(UpdateView):
model = Example
fields = ['color', 'description']
template_name = 'example.html'

def get_success_url(self):
    pass

模板:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#example.html
{% for field in form %}
    {% if field.errors %}
           
                <label class="control-label">{{ field.label }}</label>
                {{ field }}
                    <span class="help-inline">
                        {% for error in  field.errors %}{{ error }}{% endfor %}
                    </span>
               
           
            {% else %}
               
                <label class="control-label">{{ field.label }}</label>
                {{ field }}
                    {% if field.help_text %}
                        <p class="help-inline"><small>{{ field.help_text }}</small>
</p>
                    {% endif %}
               
     {% endif %}
{% endfor %}

呈现模板时,所有字段都会显示并正确填充,但"说明"不会显示在文本区域中,而是显示在普通字段中。我假设这是因为UpdateView不使用"model=something"而不是"form=something"。

我试过了。

1
2
3
4
5
6
7
8
#views.py
class EditExample(UpdateView):
    model = Example
    form_class = Exampleform
    template_name = 'example.html'

    def get_success_url(self):
        pass

但我得到一个django错误,说"init()得到了一个意外的关键字参数'instance'。

是否有任何方法可以使用UpdateView在文本区域中成功获取要呈现的描述?如果没有,我将如何实现这一点?

谢谢!


您的窗体需要从forms.ModelForm继承,而不是从基窗体类继承。