web-dev-qa-db-fra.com

comment puis-je changer le label modelform et lui donner un nom personnalisé

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

19
nothingness

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"
    }
34
solarissmoke

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"
            ...
        }
11
Selcuk

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
0
YPCrumble
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
Thiago Pires