【问题标题】:Django - crispy form not showingDjango - 没有显示酥脆的表格
【发布时间】:2021-07-07 10:35:13
【问题描述】:

我正在尝试渲染这个表单:

class LoadForm(forms.Form):
    class Meta:
        model = Load

    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.helper = FormHelper()
        self.helper.form_tag = False
        self.helper.layout = Layout(
            Row(
                'whouse',
                'supplier',
                'company',
                'product',
                'quantity',
                'unit_price',
                'load_date',
            )
        )

具有以下观点:

def load(request):
    form = LoadForm()
    context = {
        'form': form,
        'title': 'Nuovo Carico',
    }

    return render(request, 'warehouse/load.html', context)

以及以下模板:

{% extends "masterpage.html" %}
{% load static %}

{% block headTitle %}
<title>{{title}}</title>
{% endblock %}

{% block contentHead %}
{% endblock %}

{% block contentBody %}
{% load document_tags %}
{% load custom_tags %}
{% load crispy_forms_tags %}

<FORM method="POST" autocomplete="off">
    {{ form.media }}
    {% csrf_token %}

    <div class="alert alert-info">
        {{ title }}
    </div>
    {% crispy form %}
    <input type="submit" class="btn btn-primary margin-left" value="CARICA">


</FORM>

{% endblock %}

由于某种奇怪的原因,表单不会显示,我只看到标题和输入按钮。我已经尝试了非常简单的 form.as_p 没有脆皮,但仍然没有......

通过查看浏览器上的源代码,我看到有一个带有“form-row”类的 div,但其中没有表单...

看起来很奇怪。

有什么帮助吗?

非常感谢。

卡洛

【问题讨论】:

    标签: django django-forms django-crispy-forms


    【解决方案1】:

    您的表单类定义如下:class LoadForm(forms.Form): 请注意,这里是Form 而不是ModelForm,因此使用Meta 类并指定model 没有区别。相反,您想使用ModelForm [Django docs],您还需要在Meta 中指定fieldsexclude

    class LoadForm(forms.ModelForm): # `ModelForm` here
        class Meta:
            model = Load
            fields = '__all__' # All fields
        
        def __init__(self, *args, **kwargs):
            super().__init__(*args, **kwargs)
            self.helper = FormHelper()
            self.helper.form_tag = False
            self.helper.layout = Layout(
                Row(
                    'whouse',
                    'supplier',
                    'company',
                    'product',
                    'quantity',
                    'unit_price',
                    'load_date',
                )
            )
    

    【讨论】:

      猜你喜欢
      • 2016-01-26
      • 1970-01-01
      • 2016-01-29
      • 2020-06-13
      • 2015-10-23
      • 2018-01-16
      • 2019-12-21
      • 2012-12-06
      • 2014-10-11
      相关资源
      最近更新 更多