Django 自定义字段名称

rah*_*tns 1 django django-models

我知道我可以verbose_name像这样在每个模特的领域

form_name = models.CharField('Form Name', max_length = 100)
Run Code Online (Sandbox Code Playgroud)

如果我想仅针对特定视图/案例更改特定字段的名称,该怎么办?

例如,在某种情况下,我希望它是“您的表单名称”,在另一种情况下,我希望它是“他的表单名称”,等等。

提前致谢。

Wil*_*sem 5

我认为你混淆了模型和形式。模型用于存储和操作数据它还实现业务逻辑语义层

表单用于构建供用户输入数据的便捷方式。表单可以针对特定模型。但情况本身并非如此:某些表单同时操作不同的模型实例,或者根本不操作模型,或者仅操作特定模型的一部分。

可以通过不同的形式来操纵模型。例如,一种形式可以更新模型实例的某个子集,而另一种形式可以更新另一个子集。这个想法是,模型通常知道编辑模型的表单,而针对模型的表单需要一些关于模型的知识(至少要编辑有限的字段列表)。

为了回答您的问题,您通常会定义一个模型,例如:

class SomeModel(models.Model):

    name = models.CharField(max_length = 100, verbose_name='Label 1')
Run Code Online (Sandbox Code Playgroud)

现在默认情况下ModelForms 将采用 theverbose_name作为标签,但您可以覆盖它。例如,我们可以定义两种都针对的形式SomeModel

class SomeModelForm1(ModelForm):
    class Meta:
        model = SomeModel
        fields = ['name']

class SomeModelForm2(ModelForm):
    class Meta:
        model = SomeModel
        fields = ['name']
        labels = {'name': 'Label 2'}
Run Code Online (Sandbox Code Playgroud)

因此,第二种形式将使用另一种形式label作为该name字段。