Je souhaite créer un nom personnalisé pour l'une des étiquettes de mon modèle This is 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"
]
Je veux changer la vidéo au lieu de la vidéo, je veux qu'elle soit intégrée. J'ai vérifié la documentation, mais je n'ai rien trouvé qui puisse m'aider à le faire. est-ce possible sans que je doive réorganiser mon modèle? si c'est le cas, comment? Merci
De la documentation :
Vous pouvez spécifier les attributs labels, help_texts et error_messages de la classe Meta interne si vous souhaitez personnaliser davantage un champ.
Il y a des exemples juste en dessous de cette section de la documentation. Alors tu peux faire:
class Meta:
model = Post
labels = {
"video": "Embed"
}
Oui, vous pouvez . Utilisez simplement l'argument label
:
class PostForm(forms.ModelForm):
...
video = forms.FileField(label='embed')
ou le définir dans votre classe Meta
:
class PostForm(forms.ModelForm):
...
class Meta:
...
labels = {
"video": "embed"
...
}
Un moyen simple d'y parvenir sans modifier le formulaire serait de changer le verbose_name
sur le modèle. Pour le champ video
de votre modèle, vous pouvez remplacer le libellé "vidéo" du formulaire par "incorporer" comme suit:
class Post(models.Model)
video = models.UrlField(verbose_name="embed")
# Other fields
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'}),
}