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?
le nom détaillé du champ est le premier paramètre (facultatif) lors de la construction du champ.
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"
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.
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.
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.