问题
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=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"
]
I want to change the instead of video I want it to say embed. I checked the documentation but didn't find anything that would help me do that. is it possible without me having to rearrange my model? if so how? thanks
回答1:
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"
}
回答2:
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"
...
}
回答3:
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'}),
}
回答4:
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
来源:https://stackoverflow.com/questions/36905060/how-can-i-change-the-modelform-label-and-give-it-a-custom-name