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

Eri*_*Kim 3 python django django-forms

我必须遵循forms.py并且models.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__'
Run Code Online (Sandbox Code Playgroud)

到目前为止,我一直在使用 html 在屏幕上打印字段名称,如下所示:

{% for field in bha_form %}
    <label>{{ field.name }}</label>
{% endfor %}
Run Code Online (Sandbox Code Playgroud)

我传递了表单,bha_form作为 中的上下文变量views.py。

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

item_description, num_of_jts, length, cum_length, outer_d

但我想将其打印在屏幕上:

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

正如你所看到的,我无法通过简单地使用某种s.upper()方法,或者正则表达式方法来获得这个输出,因为原始字段名称和我想要的输出之间没有一定的字符串转换关系。

我想手动决定每个字段将在屏幕上打印哪些字段名称。但我不想通过硬编码 html 元素来做到这一点,如下所示:

<label>Item Description</label>
<label># of jts</label>
<label>Length</label>
Run Code Online (Sandbox Code Playgroud)

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

spe*_*ras 6

在您的字段上设置名称。请参阅文档中的详细字段名称。

class BHA_Component(models.Model):
    item_description = models.CharField('Item Description', max_length=111)
Run Code Online (Sandbox Code Playgroud)

表单将自动选取(并大写)详细名称来创建标签文本。

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