#django #extjs #jsonstore
#django #extjs #jsonstore
Вопрос:
Я хочу отобразить комбинацию extjs с помощью сервера JSONStore, на стороне которого я использую python / Django.
Итак, это моя комбинация:
xtype: 'combo',
store: new Ext.data.JsonStore({
url: 'get_peoples',
root: 'data',
totalProperty: 'total',
fields: [
{name: 'name', mapping: 'fields.name'},
{name: 'subname', mapping: 'fields.subname'}
],
autoLoad: true
}),
trigerAction: 'all'
и views.py на стороне сервера:
def get_peoples(request):
queryset = People.objects.all()
data = '{"total": %s, "%s": %s}' %
(queryset.count(), 'data', serializers.serialize('json', queryset))
return HttpResponse(data, mimetype='application/json')
вызов get_people дает мне
{"total": 1, "data": [{"pk": 1, "model": "myapp.people", "fields": {"name": "Paul", "subname": "Di Anno"}}
Я думаю, что я делаю это неправильно, потому что в моем combo не отображается ни одного элемента
Ответ №1:
Вам нужно добавить объявления displayField и valueField в ваш ComboBox, чтобы он знал, какие поля из вашего хранилища использовать для любой роли. Кроме того, устанавливать автозагрузку в хранилище не обязательно.
new Ext.form.ComboBox({
xtype: 'combo',
store: new Ext.data.JsonStore({
url: 'get_peoples',
root: 'data',
totalProperty: 'total',
fields: [
{name: 'name', mapping: 'fields.name'},
{name: 'subname', mapping: 'fields.subname'}
]
}),
triggerAction: 'all',
// Just guessing at the proper fields here.
// Set them to whatever you wish.
displayField: 'name',
valueField: 'subname'
});