为Django模型formset设置label_suffix

时间:2016-09-01 15:47:39

标签: python django

我有一个用于创建ProductFormSet的Product模型。如何将label_suffix指定为默认冒号以外的其他内容?我希望它是空白的。我看到的解决方案似乎只在申请表格时适用 - here

ProductFormSet = modelformset_factory(Product, exclude=('abc',))    
products = Product.objects.order_by('product_name')
pformset = ProductFormSet(queryset=products)

2 个答案:

答案 0 :(得分:1)

在Django 1.9+中,您可以使用form_kwargs选项。

ProductFormSet = modelformset_factory(Product, exclude=('abc',))    
products = Product.objects.order_by('product_name')
pformset = ProductFormSet(queryset=products, form_kwargs={'label_suffix': ''})

在早期的Django版本中,您可以定义一个ProductForm类,在label_suffix方法中将__init__设置为空白,然后将该表单类传递给modelformset_factory

class ProductForm(forms.ModelForm):
    ...
    def __init__(self, *args, **kwargs):
        super(ProductForm, self).__init__(*args, **kwargs)
        self.label_suffix = ''

ProductFormSet = modelformset_factory(Product, form=ProductForm, exclude=('abc',))    

答案 1 :(得分:0)

另一种方法是创建自定义标签:

@register.filter("set_label_suffix")
def set_label_suffix(field, suffix=''):
    field.field.label_suffix = suffix
    return field

然后在模板中使用(在此示例中也使用widget_tweaks

{% for field in channel_change_form %}
   <div class="form-group">
       {{ field.errors }}
       {{ field|add_label_class:"col-form-label"}}
       {{ field|set_label_suffix|add_class:"form-control" }}
   </div>
...