Dans les documents officiels, https://docs.djangoproject.com/en/1.8/ref/models/fields/#choices nous donne cet exemple:Demande de clarification de Django Code modèle Choix de Docs
class Student(models.Model):
FRESHMAN = 'FR'
SOPHOMORE = 'SO'
JUNIOR = 'JR'
SENIOR = 'SR'
YEAR_IN_SCHOOL_CHOICES = (
(FRESHMAN, 'Freshman'),
(SOPHOMORE, 'Sophomore'),
(JUNIOR, 'Junior'),
(SENIOR, 'Senior'),
)
year_in_school = models.CharField(max_length=2,
choices=YEAR_IN_SCHOOL_CHOICES,
default=FRESHMAN)
Quel est le but de fixer les variables à chaînes avant, et en plus, la réelle tuples de YEAR_IN_SCHOOL_CHOICES
? Où ces chaînes sont-elles utilisées? Ces variables sont-elles alors les mêmes que celles utilisées dans le tuple? Si oui, pourquoi? Cela semble être une étape supplémentaire et inutile.
Il n'est pas utile que dans l'exemple immédiatement avant celui-ci, ils utilisent différentsYEAR_IN_SCHOOL_CHOICES
. Merci de clarifier.
MISE À JOUR
Depuis que je suis assis ici avec wrestling ce code que nous parlons, merci à tous pour les réponses rapides. Ils ajoutent tous quelque chose à ma compréhension. Je pense que @ shang-wang a la réponse la plus concise et la plus réactive à ma question jusqu'à présent. 1+ pour la référence à get_FOO_display(). Mais dans mon cas d'utilisation particulier, l'administrateur doit indiquer à l'utilisateur final comment un objet particulier a été évalué. Je veux donc que la forme «lisible par l'homme» des évaluations soit ce qui s'affiche dans le modèle html final pour l'utilisateur final sur le site. À la lumière de ces réponses, je me demande maintenant si c'est la meilleure façon d'atteindre mon objectif? La solution:
`
tableau d'affichage html
Nom de l'objet | Évaluation
FOO | foo.get_evaluation_display()
ou peut-être:
FOO dans les objets:
Nom de l'objet | Évaluation
FOO.name | foo.get_evaluation_display()
'
Le but de ce modèle particulier est d'afficher des évaluations expertes de FOO pour les utilisateurs finaux. Chaque FOO peut avoir plusieurs évaluations de ce type. Bien que généralement assez verbeux, ces évaluations peuvent être catégorisées, d'où le champ de choix. Les utilisateurs peuvent ensuite cliquer sur pour lire l'évaluation originale en entier s'ils le souhaitent. Ainsi, FOO est défini sur un modèle différent et est lié au modèle d'évaluation par une clé étrangère. Donc, get_FOO_display() fonctionnera-t-il ici, puisque le champ de choix n'est pas sur le modèle où FOO est une instance?
p.s, je me rends compte que ceci est maintenant devenu une question différente, donc si elle doit être déplacée ou autre chose, je suis d'accord avec ça, mais ça vient directement de l'original q & a. Faites le moi savoir. THX.