如何更改模型标签并为其指定自定义名称

时间:2016-04-28 04:07:27

标签: django modelform

我想为我的模型中的标签创建一个自定义名称 这是我的forms.py

class PostForm(forms.ModelForm):
    body = forms.CharField(widget=PagedownWidget)
    publish = forms.DateField(
        widget=forms.SelectDateWidget,
        initial=datetime.date.today,
    )

    class Meta:
        model = Post
        fields = [
            "title",
            "body",
            "author",
            "image",
            "image_url",
            "video_path",
            "video",
            "publish",
            "tags",
            "status"
         ]

我想改变而不是视频,我希望它说嵌入。我检查了文档,但没有找到任何可以帮助我做到这一点的内容。是不是我不得不重新安排我的模型?如果是这样的话?感谢

4 个答案:

答案 0 :(得分:36)

来自documentation

  

如果您想进一步自定义字段,可以指定内部Meta类的标签 help_texts error_messages 属性。

在文档的该部分下面有一些示例。所以,你可以这样做:

class Meta:
    model = Post
    labels = {
        "video": "Embed"
    }

答案 1 :(得分:13)

是的,you can。只需使用label参数:

class PostForm(forms.ModelForm):
    ...
    video = forms.FileField(label='embed')

或在Meta班级中定义:

class PostForm(forms.ModelForm):
    ...
    class Meta:
        ...
        labels = {
            "video": "embed"
            ...
        }

答案 2 :(得分:1)

class Meta:

    model = Book
    fields = ('title', 'publication_date', 'author', 'price', 'pages','book_type',)
    labels  = {
        'title':'Titulo', 
        'publication_date':'Data de Publicação', 
        'author':'Autor', 
        'price':'Preço', 
        'pages':'Número de Páginas',
        'book_type':'Formato'
        }
    widgets = {
        'title': forms.TextInput(attrs={'class':'form-control'}),
        'publication_date': forms.TextInput(attrs={'class':'form-control'}),
        'author': forms.TextInput(attrs={'class':'form-control'}),
        'price': forms.TextInput(attrs={'class':'form-control'}),
        'pages': forms.TextInput(attrs={'class':'form-control'}),
        'book_type': forms.TextInput(attrs={'class':'form-control'}),
    } 

答案 3 :(得分:0)

在不编辑表单的情况下实现此目的的简单方法是在模型上change the verbose_name。对于模型上的video字段,您可以更改表格上的标签,从"视频"到"嵌入"像这样:

class Post(models.Model)
    video = models.UrlField(verbose_name="embed")
    # Other fields