モデルフォームのラベルのカスタム名を作成したいのですが、これは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"
]
ビデオの代わりに埋め込みを変更したいと思います。私はドキュメントをチェックしましたが、私がそれをするのを助ける何かを見つけませんでした。モデルを再配置しなくても可能ですか?もしそうならどのように?ありがとう
ドキュメント から:
labels、help_textsおよびerror_messagesフィールドをさらにカスタマイズする場合は、内部Metaクラスの属性。
ドキュメントのそのセクションのすぐ下に例があります。そのため、次のことができます。
class Meta:
model = Post
labels = {
"video": "Embed"
}
はい、 できます 。単にlabel
引数を使用します:
class PostForm(forms.ModelForm):
...
video = forms.FileField(label='embed')
またはMeta
クラス内で定義します:
class PostForm(forms.ModelForm):
...
class Meta:
...
labels = {
"video": "embed"
...
}
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'}),
}
フォームを編集せずにこれを達成する簡単な方法は、 change the verbose_name
モデル上。モデルのvideo
フィールドでは、次のようにフォームのラベルを「video」から「embed」に変更できます。
class Post(models.Model)
video = models.UrlField(verbose_name="embed")
# Other fields