不能只将删除按钮添加到脆皮表格中

问题描述 投票:1回答:2

我正在尝试创建一个相当简单的表格,该表格将允许我从数据库中更新和删除乐器。除HTML渲染外,其他所有东西都在工作,为此,我正在使用django-crispy-forms。

如果我想要的只是一个Submit按钮,下面的代码将非常有效:

forms.py

class InstrumentForm(forms.ModelForm):
    def __init__(self, *args, **kwargs):
        super(InstrumentForm, self).__init__(*args, **kwargs)
        self.helper = FormHelper()
        # Add a submit button after all of my fields are auto generated in the form.
        self.helper.add_input(Submit('submit', 'Submit'))

    class Meta:
        model = Instrument

views.py

class InstrumentDetailView(generic.UpdateView):
    template_name = 'instrument/details.html'
    form_class = InstrumentForm
    # FIXME Don't hardcode the URL
    success_url = '/inventory/instruments'
    model = Instrument

instrument / details.html

{% extends "shared/base.html" %}
{% load crispy_forms_tags %}

{% block content %}
<h1>Instrument Details</h1>

{% crispy form %}
{% endblock %}

通过这种配置,我看到了我的Instrument模型中的所有字段都可以通过一个有效的Submit按钮完美呈现。

问题是我要在该“提交”按钮旁边呈现一个“删除”链接。我尝试了以下方法:

forms.py

class InstrumentForm(forms.ModelForm):
    def __init__(self, *args, **kwargs):
        super(InstrumentForm, self).__init__(*args, **kwargs)
        self.helper = FormHelper()
        # Add a submit button after all of my fields are auto generated in the form.
        self.helper.add_input(Submit('submit', 'Submit'))
        self.helper.add_input(HTML('<a href=foo>foo</a>'))

    class Meta:
        model = Instrument

但是这只是呈现一个看起来像这样的按钮:

<input name="" value="" class="" id="-id-" type="">

所以看起来add_input仅适用于按钮。然后,我尝试了以下操作:

forms.py

class InstrumentForm(forms.ModelForm):
    def __init__(self, *args, **kwargs):
        super(InstrumentForm, self).__init__(*args, **kwargs)
        self.helper = FormHelper()

        button_layout = Layout(
            ButtonHolder(
               Submit('submit', 'Submit'),
               HTML('<a href="foo">foo</a>')
            ),
        )

        self.helper.add_layout(button_layout)

    class Meta:
        model = Instrument

这实际上确实呈现了我的按钮并正确链接,但是其他所有字段都消失了。我当然可以通过手动指定InstrumentForm类中的所有字段来解决此问题,但我希望避免重复代码。

有人知道使用django-crispy-form来自动提交表单并自动提交表单的方法吗?我想念什么?

我正在尝试创建一个相当简单的表格,该表格将允许我从数据库中更新和删除乐器。除了HTML渲染外,其他所有东西都在工作,为此,我正在使用django-crispy -...
django django-forms django-crispy-forms
2个回答
1
投票
这是我最终放入forms.py文件以使它与Twitter引导程序一起使用的结果:

class InstrumentForm(forms.ModelForm): def __init__(self, *args, **kwargs): super(InstrumentForm, self).__init__(*args, **kwargs) self.helper = FormHelper() self.helper.add_input(Submit('submit', 'Submit')) self.helper.add_input(Button('delete', 'Delete', onclick='window.location.href="{}"'.format('delete'))) class Meta: model = Instrument


0
投票
我的表单代码:
© www.soinside.com 2019 - 2024. All rights reserved.