Seite 1 von 1

Django - Choices aus einem Feld herausholen?

Verfasst: Montag 3. Dezember 2012, 19:03
von iliggio
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

Re: Choices aus einem Feld herausholen?

Verfasst: Montag 3. Dezember 2012, 19:06
von BlackJack
@iliggio: Ist jetzt nur geraten aber mach das doch mal auf der Klasse und nicht auf einem Exemplar von `myModel`.

Re: Choices aus einem Feld herausholen?

Verfasst: Montag 3. Dezember 2012, 21:42
von Sirius3
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

Re: Choices aus einem Feld herausholen?

Verfasst: Montag 3. Dezember 2012, 22:22
von iliggio
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

Re: Choices aus einem Feld herausholen?

Verfasst: Montag 3. Dezember 2012, 22:24
von jbs
Für das nächste mal: Gib bitte etwas mehr Informationen, um welches Framework es sich handelt. Webframeworks != Django.