【问题标题】:Django Add fieldset legend to ModelFormDjango 将字段集图例添加到 ModelForm
【发布时间】:2018-03-14 10:21:00
【问题描述】:

我有一个模型:

models.py

class Doc(models.Model):
    series = models.CharField(max_length=50, help_text="2", blank=True, null=True, default=None)
    number = models.CharField(max_length=50, help_text="2", blank=True, null=True, default=None)
    name = models.CharField(max_length=150, help_text="3")
    citizenship = models.ManyToManyField(Citizenship, help_text="4")

forms.py

class DocForm(ModelForm):

    class Meta:
        model = Doc
        fields = '__all__'

如何为这些字段添加 2 个图例? 1 代表系列和编号,1 代表姓名和国籍?

模板

{% for field in form %}
<div class="form-group">
    <label for="{{ field.id_for_label }}" class="control-label col-md-3">{{ field.label }}
        {% if field.field.required %}<span class="required"> * </span> {% endif %}
    </label>
    <div class="col-md-4">
        {{ field }}
        {% if field.errors %}
            {% for error in field.errors %}
            <span id="{{ field.id_for_label }}-error" class="help-block help-block-error">{{ error }}</span>
            {% endfor %}
        {% endif %}
    </div>
</div>
{% endfor %}

【问题讨论】:

  • 据我所知,目前还没有开箱即用的解决方案。您可能想看看这篇较旧的帖子:Django and fieldset on modelform
  • 我试过了,但我做不到:\是否可以在 BetterForm fields = 'all' 中使用?

标签: python django


【解决方案1】:

我正在写这个,也许其他人也需要它:

这就是我的做法:

forms.py

class DocForm(BetterModelForm):

    class Meta:
        model = Doc
        fieldsets = [
        ('main',
         {'fields': ['name', 'citizenship'],
          'legend': 'I. PERSONAL DATA'}),

        ('main1',
         {'fields': ['series', 'number'],
          'legend': 'II. PROFESSIONAL IDENTIFICATION'})]

模板

{% for fieldset in form.fieldsets %}
    <fieldset class="{{ fieldset.classes }}">
    {% if fieldset.legend %}
        <legend>{{ fieldset.legend }}</legend>
    {% endif %}
    {% for field in fieldset %}
    <div class="form-group">
        <label for="{{ field.id_for_label }}" class="control-label col-md-3">{{ field.label }}
            {% if field.field.required %}<span class="required"> * </span> {% endif %}
        </label>
        <div class="col-md-4">
            {{ field }}
            {% if field.errors %}
                {% for error in field.errors %}
                <span id="{{ field.id_for_label }}-error" class="help-block help-block-error">{{ error }}</span>
                {% endfor %}
            {% endif %}
        </div>
    </div>
    {% endfor %}
    </fieldset>
{% endfor %}

【讨论】:

  • 为什么有 2 个 Meta 类?
猜你喜欢
  • 2015-06-25
  • 2011-05-19
  • 2011-06-07
  • 2011-01-05
  • 2012-01-26
  • 2023-03-09
  • 2018-03-10
  • 2012-11-13
相关资源
最近更新 更多