2009-05-10 8 views
0

Plattform: django 1.0, Google App Engine, app-engine-patch, Python 2.5.4Wahl Immobilien in Google App Engine

ich die Auswahl zu verwenden, ist Tring Attribut, wie ich immer in django Website wurde mit

STATUS_CHOICES = ((1, _('Yet To Start')), (2, _('Running')), (3, _('Paused')), (4, _('Completed')), (5, _('Cancelled')), (6, _('Error')),) 

class Campaign(db.Model): 
    name = db.TextProperty() 
    status = db.IntegerProperty(choices=STATUS_CHOICES,default=2) 

jetzt, wie ich zu app-Motor bewegt habe ich dieses sehe nicht funktioniert ...

ich bin immer ein

BadValueErr oder

Eigenschaftsstatus ist 3; muss eine der folgenden Nummern sein: ((1, yet To Start '), (2, u'Running'), (3, u'Paused '), (4, u'Completed'), (5, u 'Abgebrochen'), (6, u'Error '))

wie shud ich über dieses Problem gehen?

Antwort

1

This is a documented problem, die nicht aufgelöst werden. Einfach gesagt, Sie können dies nicht tun, wenn Sie GAE verwenden.

Guido sagt der folgende, wenn das obige Ticket endet:

Ich bin sehr traurig, aber ich habe diese als ungültig zu schließen. Die App Engine-Definition des Choice-Parameters für die db.Property-Klasse ist , die sich von der Django-Definition unterscheidet. Siehe http://code.google.com/appengine/docs/datastore/propertyclass.html#Property

Ich weiß, dass dies zu Problemen führen kann, wenn Sie versuchen, ein Formular aus dem Modell zu erstellen, aber die Lösung ist das Formularfeld mit einem benutzerdefinierten Widget und Bestehen der Liste der gewünschten Auswahl außer Kraft zu setzen, um das Widget. (Es gibt ein Beispiel dafür in Rietveld, in Codereview/views.py, Klasse SettingForm.)

0

Als Paolo sagt dies nicht der Fall, wie die Auswahl Parameter arbeitet in App Engine-Modelle. Es ist durchaus möglich, eigene benutzerdefinierte Eigenschaften zu schreiben, die sich jedoch so verhalten, wie Sie es möchten. Hier ist ein Beispiel aus dem Kochbuch von einem, das ähnlich ist: EnumProperty.