Я создаю простое веб-приложение «Диспетчер задач», используя Django 1.11 и ExtJS4 в качестве клиентской части.
Каждая созданная пользователем запись будет иметь свою категорию.
Теперь у меня есть проблема - в сетке ExtJS каждая категория записи отображается как значение «id» категории. И это справедливо, потому что я использую внешний ключ для идентификатора.
Как отобразить поле типа вместо идентификатора в таблице сетки ExtJS?
Я пытался использовать опцию django 'to_field = type', и она фактически работает, вместо 'category_id = id', я получил 'category_id = type'. Но мой учитель сказал, что это не решение для этого случая, и в бэкэнде я должен работать с «id».
models.py
class Entry(models.Model):
headline = models.CharField(max_length=255)
body_text = models.TextField()
pub_date = models.DateTimeField(auto_now_add=True)
category = models.ForeignKey('Category', on_delete=models.CASCADE)
class Category(models.Model):
type = models.CharField(max_length=255, unique=True)
В views.py я отправляю формат JSON для клиентской части ExtJS
views.py
def JS_entries_list(request):
list_of_entries = Entry.objects.all().values()
context = {
'data': list(list_of_entries)
}
return JsonResponse(context)
А вот моя модель ExtJS, которую я использую для хранения сетки. Здесь, как вы можете видеть, я получаю 'category_id' как 'int'
Ext.define('Entry', {
extend: 'Ext.data.Model',
idProperty: 'entryID',
fields: [{
name: 'id',
type: 'int',
}, {
name: 'uuid',
type: 'string',
}, {
name: 'user_id',
type: 'int',
}, {
name: 'headline',
type: 'string',
}, {
name: 'body_text',
type: 'string',
}, {
name: 'pub_date',
type: 'date',
}, {
name: 'category_id',
type: 'int',
}, {
name: 'fav_flag',
type: 'bool',
}, {
name: 'published',
type: 'bool',
}]
});
Так что, если я правильно понял, теперь я должен получить «идентификатор категории» из базы данных, а затем где-нибудь (на стороне сервера или клиента) преобразовать его в «тип категории» и отобразить в сетке extjs.
Теперь, пожалуйста, помогите мне найти правильный и элегантный способ сделать это?