首页 > 解决方案 > Django 脆表单模型表单集 - 停止显示 DELETE 列

问题描述

我正在使用 Django 3.2 和crispy-forms 1.11.2

我有一个这样定义的模型和表单:

/path/to/myapp/models.py

class Foo(models.Model):
    pass


class FooChild(models.Model):
    parent = models.ForeignKey(Foo, on_delete=models.CASCADE)
    title = models.CharField(max_length=16)

/path/to/myapp/forms.py

class FooChildForm(ModelForm):
    
    class Meta:
        model = FooChild
        fields = "__all__"




class FooChildFormSetHelper(FormHelper):
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.form_method = 'post'
        self.layout = Layout(
            'title',
        )
        self.render_required_fields = True        

/path/to/myapp/views.py

class FooCreateView(CreateView):
    model = Foo
    

    def __init__(self, **kwargs):
        super().__init__(**kwargs)
        self.choice_formset = inlineformset_factory(Foo, Child, form=FooChild, extra=9)
        


    def get(self, request, *args, **kwargs):
        form = self.form_class()

        p = self.model()
        formset = self.choice_formset(instance=p)   
        helper = ChildFormSetHelper()
        helper.template = 'bootstrap/table_inline_formset.html'
        helper.form_tag = False

        return render(request, 'myapp/create.html', {'form' : form, 'formset': formset, 'helper': helper})

/path/to/myapp/templates/myapp/create.html

{% block content %}
<div class="container-lg">

  <form id="frm-foo-create" method="post">

    {% csrf_token %}  

    <div class="row" style="margin: 30px 0px;">
    
      <div class="col-lg-12">
        <h2>Create a New Foo</h2>
        <br />

        {% crispy form %}
        {{ form|as_crispy_errors }}

        {% crispy formset helper %}

        {{ formset.management_form }}
      </div> <!-- col-lg-12-->
    </div> <!-- row -->


    <div class="row" style="margin: 30px 0px;">
        <div class="col-lg-2">
            <input style="width:100%; padding-left: 20px;" type="submit" name="submit" value="Submit" class="btn btn-primary" id="btn-foo-create">
        </div>                
    </div>

  </form>

</div> <!-- container -->

{% endblock content %}

创建此页面时,它会在嵌套子行的 Title 列旁边显示一个DELETE列。如何摆脱 DELETE 列?

标签: djangodjango-formsdjango-crispy-forms

解决方案


推荐阅读