Django-表单-更改模板上的字段名称

时间:2018-08-22 03:12:20

标签: python django django-forms

我必须关注forms.pymodels.py

# models
class BHA_Component(models.Model):
    item_description = models.CharField(max_length=111)
    num_of_jts = models.CharField(max_length=111)
    length = models.CharField(max_length=111)
    cum_length = models.CharField(max_length=111)
    outer_d = models.CharField(max_length=111)

# forms
class BHA_Component_Form(forms.ModelForm):
    class Meta():
        model = BHA_Component
        fields = '__all__'

到目前为止,我一直在使用html这样在屏幕上打印字段名称:

{% for field in bha_form %}
    <label>{{ field.name }}</label>
{% endfor %}

我以bha_form的形式作为views.py中的上下文变量进行了传递。

如果我使用这组代码,它将在屏幕上显示:

item_description, num_of_jts, length, cum_length, outer_d

但是我想在屏幕上打印出来

Item Description, # of jts, Lenth, Cum. Len., OD

如您所见,我无法仅通过使用某些s.upper()方法或regex方法来获得此输出,因为原始字段名称与所需的输出之间没有任何字符串转换关系。

我想手动决定要在屏幕上为每个字段打印的字段名称。但是我不想通过对这样的html元素进行硬编码来做到这一点:

<label>Item Description</label>
<label># of jts</label>
<label>Length</label>

我想使用Django在后端执行此操作。我该怎么办?

1 个答案:

答案 0 :(得分:2)

在您的字段上设置一个名称。请参阅文档中的verbose field names

class BHA_Component(models.Model):
    item_description = models.CharField('Item Description', max_length=111)

form将自动提取(并大写)详细名称,以创建标签文本。

我现在无法检查,但是如果我的记忆正确,我相信您应该在标签中使用field.label而不是field.name