2016-05-23 41 views
0

我目前正在使用一些Django模板,并希望在所需字段的标签后面加一个星号。Django label_tag需要星号

首先,我发现这种语法工作得很好,但它使我输入了很多不需要星号就不需要的代码。

<div> 
    {{ field.errors }} 
    <label for="{{ field.auto_id }}"> 
     {% if field.field.required %}<span class="required">{{ field.label }}</span> 
     {% else %}{{ field.label }}{% endif %} 
    </label> 
    {{ field }} 
</div> 

这是我目前在我的模板代码:

<div> 
    {{ field.errors }} 
    {{ field.label_tag }}{{ field }} 
</div> 

这样就节省了大量的代码来写,但我无法弄清楚如何后得到的星号带有必填字段的标签。

有人可以帮助我吗? 如果您需要更多信息,请随时询问。

+0

您是否考虑过使用[Crispy Forms](http://django-crispy-forms.readthedocs.io/en/latest/install.html)来渲染表单? 默认情况下,它将被问到的星号添加到所有必填字段中。 [见截图](https://i.stack.imgur.com/rdXFD.png)。 它也概述了红色的必填字段。 – DonExo

+0

事实上。去年我经常使用脆皮形式。 –

回答

0

考虑编写一个模板标记,发生在field并返回field.label如果需要现场带星号的后缀,而field.label如果不是。你也可以使用像这样:

<div> 
    {{ field.errors }} 
    {{ field | append_ast_if_req }} 
    {{ field }} 
</div> 

你的模板标签可以是:

@register.filter 
def append_ast_if_req (field): 
    if field.field.required: 
     return field.label + '*' 
    else: 
     return field.label 
1

你试过然后使用CSS,你可以添加一个红色星号的形式(CF here)上设置required_css_class = 'something'标签