Django - Choices aus einem Feld herausholen?

Django, Flask, Bottle, WSGI, CGI…
Antworten
iliggio
User
Beiträge: 6
Registriert: Montag 5. November 2012, 12:49

Hallo, vielleicht kann mir jemand beim folgenden Problem mit dem Django-Framework helfen:

Code: Alles auswählen

class myModel(models.Model)
    myfield=CharField(max_length=500, choices=[('a','A'), ('b','B')])
Nun haette ich gern die choices (woanders, z.B. in einem View)
wenn ich nun sowas wie

Code: Alles auswählen

myModel().myfield.choices
eingebe, bekomme ich "str has no argument 'choices'

Jemand ne Idee, wie ich da sonst ran komme?

Danke schon mal
Zuletzt geändert von iliggio am Dienstag 4. Dezember 2012, 00:58, insgesamt 1-mal geändert.
BlackJack

@iliggio: Ist jetzt nur geraten aber mach das doch mal auf der Klasse und nicht auf einem Exemplar von `myModel`.
Sirius3
User
Beiträge: 18216
Registriert: Sonntag 21. Oktober 2012, 17:20

Hallo iliggio,

Code: Alles auswählen

myModel()
erzeugt einen neuen Datenbankeintrag, sodass

Code: Alles auswählen

myModel().myfield
den Inhalt des Feldes "myfield" zurückliefert, der nunmal vom Typ str ist.

Django spielt ein bißchen mit Meta-Klassen (@BlackJack: daher falsch geraten 8) ),
deshalb ein etwas komplizierterer Zugriff:

Code: Alles auswählen

myModel._meta.get_field('myfield').flatchoices
Aber irgendwie kommt man immer an alles ran.

Grüße
Sirius
iliggio
User
Beiträge: 6
Registriert: Montag 5. November 2012, 12:49

Hallo Sirius,

danke, so funktioniert es. Was ich nicht verstehe ist: Wenn ich eine Instanz der Klasse anlege, sollte doch erstmal nichts in der Datenbank geschehen, erst wenn ich die save() Methode aufrufe. Und 'myField' ist doch ein ganz normaler Member, oder taeusch ich mich da und es wird mit gettern herumgepfuscht?

Viele Gruesse
iliggio
Benutzeravatar
jbs
User
Beiträge: 953
Registriert: Mittwoch 24. Juni 2009, 13:13
Wohnort: Postdam

Für das nächste mal: Gib bitte etwas mehr Informationen, um welches Framework es sich handelt. Webframeworks != Django.
[url=http://wiki.python-forum.de/PEP%208%20%28%C3%9Cbersetzung%29]PEP 8[/url] - Quak!
[url=http://tutorial.pocoo.org/index.html]Tutorial in Deutsch[/url]
Antworten