выбор свойства в Google App Engine - PullRequest
0 голосов
/ 10 мая 2009

платформа: django 1.0, google app engine, патч app-engine, python 2.5.4

я пытаюсь использовать атрибут choices, как я всегда использовал на веб-сайте django

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)

Теперь, когда я перешел на app-engine, я не вижу, что это работает ...

я получаю

BadValueError

Статус объекта 3; должен быть одним из ((1, Вы начинаете), (2, u'Running '), (3, u'Paused'), (4, u'Completed '), (5, u'Cancelled'), (6, u'Error '))

Как я могу решить эту проблему?

Ответы [ 2 ]

1 голос
/ 10 мая 2009

Это задокументированная проблема , которая не будет решена. Проще говоря, вы не можете сделать это при использовании GAE.

При закрытии вышеуказанного билета Гвидо говорит следующее:

Мне очень жаль, но я должен закрыть это как недействительное.

Определение App Engine параметра choices для класса db.Property: отличается от определения Джанго. Увидеть http://code.google.com/appengine/docs/datastore/propertyclass.html#Property

Я понимаю, что это может вызвать проблемы, когда вы пытаетесь создать форму из модель, но решение состоит в том, чтобы переопределить поле формы с помощью пользовательского виджета и Передача списка желаемых вариантов виджету. (Есть пример этого в Ритвельд, в codereview / views.py, класс SettingForm.)

0 голосов
/ 10 мая 2009

Как говорит Паоло, этот параметр не работает в моделях App Engine. Вполне возможно написать свои собственные пользовательские свойства, которые ведут себя так, как вы хотите. Вот пример из поваренной книги, похожей на: EnumProperty .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...