Попытка сделать выбор в стиле enum = работает для django, но в выпадающем списке отображаются целые кортежи - PullRequest
1 голос
/ 19 апреля 2009

Я использую appengine и appenginepatch (поэтому моя проблема может быть связана с этим)

Я настроил модель со свойством, которое имеет несколько вариантов, но при попытке отображения в форме или через интерфейс администратора я получаю сообщение об ошибке:

Режим свойства - «o»; должен быть одним из (('s', 'Single'), ('m', 'Multi'), ('o', 'Ordered'))

Это мой код:

MODES = (
  ('s', 'Single'),
  ('m', 'Multi'),
  ('o', 'Ordered')
)

class X(search.SearchableModel):
    mode = models.StringProperty( default='s', choices=MODES ) 

если я установлю его на использование целых чисел (как показано ниже), то в форме администратора (и моей собственной ModelForm) каждый параметр свойства будет показан в виде целого кортежа, чтобы при выборе и попытке сохранения я получал сообщение об ошибке. не сохраняется целочисленное значение

MODES = (
  (0, 'Single'),
  (1, 'Multi'),
  (2, 'Ordered')
)

class X(search.SearchableModel):
    mode = models.IntegerProperty( default=0, choices=MODES ) 

Есть ли что-то особенное, что я должен сделать?

1 Ответ

2 голосов
/ 19 апреля 2009

Похоже, что это проблема поддержки Django / appengine. Это задокументировано здесь на трекере ошибок google-app-engine-django, но там оно закрыто как "wontfix". Он также задокументирован здесь на трекере ошибок googleappengine и закрыт как недействительный.

Согласно документам , параметр appengine choices работает иначе, чем параметр Django. Похоже, вы не сможете делать то, что хотите, без создания собственного виджета. Согласно комментарию Гвидо, закрывающему билет googleappengine,

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

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