2013-03-16 2 views
1

У меня есть модель поля как этотDjango-tastypie - как включить выбор?

location_state = models.CharField(max_length=255, null=True, blank=True, choices=STATE_CHOICES) 

Его значение возвращается tastypie, но для рендеринга ListBox список всех доступных вариантов необходим. Каков наилучший способ опубликовать такой выбор через ресурс?

ответ

1

Я бы использовал built-in schema, чтобы сообщить клиенту о параметрах поля. Тем не менее, параметры выбора не включены в ресурс схемы по умолчанию. This thread показывает один способ, как достичь этого.

Редактировать 2013-03-19:

В качестве альтернативы вы можете добавить свой выбор в мета-поля с помощью/переопределение метода alter_list_data_to_serialize в вашем ModelResource.

+0

Это будет один дополнительный запрос ajax - получить схему. Можно ли добавить выбор прямо в поле «мета» в json-ответе? – AlexA

+0

Отредактирован мой ответ –

1

Я не мог найти простой способ получить выбор по какой-то причине, но это сделает трюк.

YourModel._meta.get_field('location_state').choices 

Следует отметить, однако, _meta внутренняя деталь реализации, но был полагались на с большим количеством приложений и расширений, так что должно быть относительно безопасным для использования.

+0

Извините, я не прочитал последний бит об экспонировании через ресурс. Я не использовал tastypie, поэтому я не могу прокомментировать это. Вместе с django-piston вы просто создали пользовательский ресурс, который включал бы все необходимые поля (и дополнительные), а не метод modelform, который определял бы, какую модель должен исследовать ресурс. –

Смежные вопросы