在Django中使用ExtJS网格获取外键值而不是键,可以通过以下步骤实现:
Parent
和Child
,Child
模型有一个外键字段指向Parent
模型。from django.db import models
class Parent(models.Model):
name = models.CharField(max_length=100)
class Child(models.Model):
parent = models.ForeignKey(Parent, on_delete=models.CASCADE)
name = models.CharField(max_length=100)
select_related
方法来预先加载外键关联的数据,以避免多次查询数据库。from django.http import JsonResponse
from myapp.models import Child
def get_children(request):
children = Child.objects.select_related('parent').all()
data = [{'id': child.id, 'name': child.name, 'parent': child.parent.name} for child in children]
return JsonResponse(data, safe=False)
Ext.data.Store
来加载数据,并在模型中定义字段映射。Ext.define('Child', {
extend: 'Ext.data.Model',
fields: [
{name: 'id', type: 'int'},
{name: 'name', type: 'string'},
{name: 'parent', type: 'string', mapping: 'parent.name'}
]
});
var store = Ext.create('Ext.data.Store', {
model: 'Child',
proxy: {
type: 'ajax',
url: '/get_children/',
reader: {
type: 'json',
rootProperty: ''
}
},
autoLoad: true
});
var grid = Ext.create('Ext.grid.Panel', {
store: store,
columns: [
{text: 'ID', dataIndex: 'id'},
{text: 'Name', dataIndex: 'name'},
{text: 'Parent', dataIndex: 'parent'}
],
renderTo: Ext.getBody()
});
在上述代码中,mapping: 'parent.name'
指定了parent
字段的映射关系,将外键的名称作为字段的值。
这样,通过以上步骤,就可以在ExtJS网格中获取外键值而不是键。请注意,以上代码仅为示例,实际应用中需要根据具体情况进行调整。
腾讯云相关产品和产品介绍链接地址:
领取专属 10元无门槛券
手把手带您无忧上云