6

我需要在我的 ModelForm 中添加一个“取消”按钮,我使用的是清晰的表单,但是当我添加href='personnel-index'以重定向回列表视图时,它没有。我检查了他们的文档,但在 Google 上没有运气也没有任何运气。

4

3 回答 3

6

有时,浏览器的“后退”按钮与 Web 表单中的“取消”按钮一样好,但如果您确定需要一个,则始终可以在简洁的表单中使用 HTML 对象。像这样的东西会起作用:

HTML("""<a class="classes-for-styling" href="/personnel/list/">Cancel</a>""")

而且,更好的是,您可以包含上下文感知标签,以避免将 url 硬编码到表单中:

HTML("""<a class="classes-for-styling" href="{% url 'personnel-index' %}">Cancel</a>""")

然后由您决定链接的样式,使其看起来像一个按钮。

于 2014-02-07T19:29:02.843 回答
5

不一定理想,但这应该可以处理大多数情况。

self.helper.add_input(Button('cancel', 'Cancel', css_class='btn-default', onclick="window.history.back()"))
于 2014-04-12T17:20:16.333 回答
2

抱歉,我无法评论现有解决方案,因为我的声誉不够好。这就是为什么我要添加上面提出的 HTML (crispy form object) 解决方案的代码示例:

class MoodForm(forms.ModelForm):
    class Meta:
        model = Mood

    def __init__(self, *args, **kw):
        super(MoodForm, self).__init__(*args, **kw)
        self.helper = FormHelper()
        layout = Layout(
            ButtonHolder(
                Submit('Save', 'Save', css_class='button white'),
                HTML('<a class="btn btn-warning" href={% url "mood:list" %}>Cancel</a>'),
            ),  
        )
        self.helper.add_layout(layout)        

这里最重要的东西是:

ButtonHolder(
    Submit('Save', 'Save', css_class='button white'),
    HTML('<a class="btn btn-warning" href={% url "mood:list" %}>Cancel</a>'),
)

它呈现两个按钮“保存”和“取消”。

于 2014-06-18T09:59:29.293 回答