how can I change the modelform label and give it a custom name

前端 未结 4 542
慢半拍i
慢半拍i 2020-12-29 19:23

I want to create a custom name for on of the labels in my modelform this is my forms.py

class PostForm(forms.ModelForm):
    body = forms.CharField(widget=Pa         


        
相关标签:
4条回答
  • 2020-12-29 20:07

    Yes, you can. Simply use the label argument:

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

    or define it inside your Meta class:

    class PostForm(forms.ModelForm):
        ...
        class Meta:
            ...
            labels = {
                "video": "embed"
                ...
            }
    
    0 讨论(0)
  • 2020-12-29 20:13

    From the documentation:

    You can specify the labels, help_texts and error_messages attributes of the inner Meta class if you want to further customize a field.

    There are examples just below that section of the docs. So, you can do:

    class Meta:
        model = Post
        labels = {
            "video": "Embed"
        }
    
    0 讨论(0)
  • 2020-12-29 20:17
    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'}),
        } 
    
    0 讨论(0)
  • 2020-12-29 20:17

    An easy way to achieve this without editing the form would be to change the verbose_name on the model. For the video field on your model you could change the label on the form from "video" to "embed" like so:

    class Post(models.Model)
        video = models.UrlField(verbose_name="embed")
        # Other fields
    
    0 讨论(0)
提交回复
热议问题