django - 表单集中每个表单中字段的不同标签

标签 django django-forms

如何为表单集中的每个表单中的字段设置不同的标签?到目前为止,我看到的解决方案允许在表单集中进行自定义,但相同的自定义同样适用于表单集中表单中的所有字段。

我目前要做的是将标签值存储为表单内的隐藏字段。这是一个表格:

class RepairTypeForm(forms.Form):
  amount = forms.FloatField(required=False, min_value=0.01)
  repair_name = forms.CharField(widget=forms.HiddenInput(), required=False)

从我这样做的角度来看:

RepairTypeFormSet = formset_factory(RepairTypeForm)
repair_formset_values = [{'repair_name': 'Roof'}, {'repair_name': 'Walls'}]
repair_type_formset = RepairTypeFormSet(initial=repair_formset_values)

和模板:

{{ repair_type_formset.management_form }}
{% for form in repair_type_formset %}
  {{ form.repair_name }}
  <label for='{{ form.amount.auto_id }}'>{{ form.repair_name.value}}</label>{{form.amount}}
{% endfor %}

最佳答案

这是我的做法。我在 formset 基类中使用了 get_form_kwargs 方法。请注意,form_kwargs 取决于特定的表单实例。为您提供一些上下文......在我的例子中,我想让用户为一堆不同的项目选择一个选项。并希望用户看到这些项目。

from django.forms import formset_factory
from django import forms
from django.forms.formsets import BaseFormSet

class ActionForm(forms.form):
    choices = (
        ('Add', 'Add'),
        ('Remove', 'Remove')
    )
    action = forms.ChoiceField(widget = forms.Select, choices = choices)
    def __init__(self, item, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.fields['action'].label = item


class ActionFormSet(BaseFormSet):
    def get_form_kwargs(self,index):
        kwargs = super().get_form_kwargs(index)
        item = kwargs['items'][index]
        return {'item' : item}
#Views.py

def get_context_data(self, **kwargs)
    context = super().get_context_data(**kwargs)
    items = ['Apple', 'Orange', 'Banana']
    factory = formset_factory(ActionForm, max_num = len(items), formset=ActionFormSet)
    formset = factory(form_kwargs={'items':items})
    context['formset'] = formset
    return context
       

关于django - 表单集中每个表单中字段的不同标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25101566/

相关文章:

python - Django 从 url 加载图像 - ImageField 对象没有属性 _committed

python - 如何为 ManyToMany 记录添加时间戳

python - django 创建后将用户重定向到帖子

python - Django 如何知道呈现表单字段的顺序?

python - 我们可以用扭曲的 python 创建应用程序作为 django ......?

django - 使用 Django 和 Elastic beanstalk 实现并行任务的最佳方式是什么?

django - 在 __init__ 处动态添加到 ModelForm 的字段不会保存

python - 将 select_lated 和 prefetch_lated 与许多参数一起使用

django - 将 form_list 表单实例保存到数据库的正确方法?

python - 在Django模板中以另一条记录的字段内容为标签显示未知数量的字段