Django: Greifen Sie auf das Tupel des gegebenen Feldes zu
Ich würde gerne die benannten Werte von Entscheidungen Feld für eine Wahl, die aktuell nicht ausgewählt ist. Ist das möglich?
Zum Beispiel: models.py
FILE_STATUS_CHOICES = (
('P', 'Pending'),
('A', 'Approved'),
('R', 'Rejected'),
)
class File(models.Model):
status = models.CharField(max_length=1, default='P', choices=FILE_STATUS_CHOICES)
views.py
f = File()
f.status = 'P'
f.save()
old_value = f.status
print f.get_status_display()
> Pending
f.status = 'A'
f.save()
new_value = f.status
print f.get_status_display()
> Approved
Wie bekomme ich das alte display-Wert von 'P' auf 'in Bearbeitung?' Ich kann so tun, indem Sie erstellen ein Formular in der Ansicht und Zugriff auf Ihr Wörterbuch von Werten/Bezeichnungen. Ist das die beste/einzige Ansatz?
InformationsquelleAutor der Frage Furbeenator | 2013-09-09
Du musst angemeldet sein, um einen Kommentar abzugeben.
Diese ist ziemlich ok, um den import Ihrer Wahl mapping
FILE_STATUS_CHOICES
von Modellen und verwenden Sie es, umPending
durchP
:get_FIELD_display()
- Methode für Ihr Modell ist dabei im wesentlichen die gleiche Sache:Da ist ein
flatchoices
Feld auf dem Modell-Feld, können Sie es mit Hilfe von_meta
undget_field_by_name()
Methode:wo
f
ist Ihr model-Instanz.Siehe auch:
InformationsquelleAutor der Antwort alecxe
Empfehle ich
Choice
ausdjango-model-utils
: https://django-model-utils.readthedocs.io/en/latest/utilities.html#choices.Benutze ich es in allen meinen Modellen, wenn ich die Wahl Bereich. Siehe Beispiele, es verfügt über hervorragende Optionen.
InformationsquelleAutor der Antwort Ibrohim Ermatov