web-dev-qa-db-fra.com

Pouvez-vous changer une étiquette de champ dans l'application d'administration Django?

Comme le titre l'indique. Je veux pouvoir changer le libellé d'un seul champ dans l'application d'administration. Je connais l'attribut Form.field, mais comment puis-je faire en sorte que mon modèle ou ModelAdmin transmette ces informations?

44
Josh Smeaton

le nom détaillé du champ est le premier paramètre (facultatif) lors de la construction du champ.

70
Javier

Si votre champ est une propriété (une méthode), vous devez utiliser short_description:

class Person(models.Model):
    ...

    def address_report(self, instance):
        ...
    # short_description functions like a model field's verbose_name
    address_report.short_description = "Address"
24
Seperman

Comme Javier l'a suggéré, vous pouvez utiliser un nom détaillé dans vos champs dans model.py. Exemple comme ci-dessous,

class Employee(models.Model):
     name = models.CharField(max_length = 100)
     dob = models.DateField('Date Of Birth')
     doj = models.DateField(verbose_name='Date Of Joining')
     mobile=models.IntegerField(max_length = 12)
     email = models.EmailField(max_length=50)
     bill = models.BooleanField(db_index=True,default=False)
     proj = models.ForeignKey(Project, verbose_name='Project')

Ici, les fichiers dob, doj et proj afficheront leur nom sous forme d'administration selon le verbose_name mentionné dans ces champs.

17

S'appuyant sur la réponse de Javier; si vous avez besoin d'une étiquette dans les formulaires (sur le front-end) et d'une autre étiquette sur admin, il est préférable d'en définir une interne (admin) dans le modèle et de l'écraser sur les formulaires. L'administrateur utilisera bien sûr automatiquement l'étiquette dans le champ modèle.

4
muhuk

Options méta

Donnez vos métadonnées de modèle en utilisant une méta de classe interne, comme ceci:

from Django.db import models

class MyClassName(models.Model):

    class Meta:
        verbose_name = "Question"
        verbose_name_plural = "Questions"

noms singuliers et pluriels lisibles par l'homme (verbose_name et verbose_name_plural). Aucun n'est requis, et l'ajout de la classe Meta à un modèle est complètement facultatif.

2
Majid Zandi