Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django 将相关模型的方法放入jqgrid的单独列中_Django_Orm_Jqgrid - Fatal编程技术网

Django 将相关模型的方法放入jqgrid的单独列中

Django 将相关模型的方法放入jqgrid的单独列中,django,orm,jqgrid,Django,Orm,Jqgrid,我正在使用django 1.4和django_gems包中的jqgrid 下面的代码试图通过连接名字和姓氏将virtual列带到网格中 然而,它失败了 无法将关键字客户端\u获取\u全名解析到字段中 有什么可以接受的方法来实现这一点吗 class Car(models.Model): number = models.CharField(max_length = 50) client = models.ForeignKey('Client') class Client(model

我正在使用django 1.4和
django_gems
包中的
jqgrid
下面的代码试图通过连接名字和姓氏将
virtual
列带到
网格中

然而,它失败了

无法将关键字
客户端\u获取\u全名
解析到字段中

有什么可以接受的方法来实现这一点吗

 class Car(models.Model):
     number = models.CharField(max_length = 50)
 client = models.ForeignKey('Client')

 class Client(models.Model):
     first_name = models.CharField(max_length = 50)
 last_name = models.CharField(max_length = 50)
 def get_fullname(self):
     return '%s %s' % (self.first_name, self.last_name)

 from django_gems.jqgrid
 import JqGrid
 class CarGrid(JqGrid):
     queryset = Car.objects.all()
 fields = ['number', 'client__get_fullname']

 jqgrid config = {
     "altRows": true,
     "rowList": [10, 25, 50, 100],
     "sortname": "id",
     "viewrecords": true,
     "autowidth": false,
     "forcefit": false,
     "shrinkToFit": false,
     "height": "auto",
     "colModel": [{
         "index": "id",
         "editable": false,
         "name": "id",
         "label": "ID"
     }, {
         "index": "number",
         "editable": false,
         "name": "number",
         "label": "number"
     }, {
         "index": "first_name",
         "editable": false,
         "name": "client__first_name",
         "label": "first name"
     }],
     "caption": "Cars",
     "datatype": "json",
     "gridview": true,
     "sortorder": "asc",
     "viewsortcols": true,
     "url": "main/examplegrid",
     "rowNum": 10,
     "pager": "#pager",
     "jsonReader": {
         "repeatitems": false
     }
 }

 sample data = {
     "total": 1,
     "records": 1,
     "rows": [{
         "client__first_name": "Bill",
         "client__last_name": "Clinton",
         "id": 1,
         "number": "111222"
     }],
     "page": 1
 }

好的!让我们来获取JSON数据

{
“总数”:1,
“记录”:1,
“行”:[
{
“客户名”:“账单”,
“客户姓氏”:“克林顿”,
“id”:1,
“编号”:“111222”
}
],
“第页”:1
}
jqGrid还包含一个附加列

{name: "client__full_name", label: "full name"}
它应该由
客户名和
客户姓构成。在这种情况下,最简单的方法是使用回调函数:

$("#list").jqGrid({
    url: "main/examplegrid",
    datatype: "json",
    colModel: [
        {name: "id", label: "ID"},
        {name: "client__first_name", label: "first name"},
        {name: "client__last_name", label: "last name"},
        {name: "client__full_name", label: "full name"}
    ],
    gridview: true,
    jsonReader: { repeatitems: false },
    //... other parameters
    beforeProcessing: function (data) {
        var items = data.rows, n = items.length, i, item;
        for (i = 0; i < n; i++) {
            item = items[i];
            item.client__full_name = item.client__first_name + ' ' +
                item.client__last_name;
        }
    }
});
$(“#列表”).jqGrid({
url:“主/示例网格”,
数据类型:“json”,
colModel:[
{名称:“id”,标签:“id”},
{name:“客户名”,标签:“first name”},
{name:“客户姓氏”,标签:“姓氏”},
{name:“客户全名”,标签:“全名”}
],
gridview:没错,
jsonReader:{repeatitems:false},
//…其他参数
预处理前:函数(数据){
var items=data.rows,n=items.length,i,item;
对于(i=0;i

jqGrid将在从服务器接收到数据后和处理数据之前调用回调函数
beforeProcessing
。因此,我们可以通过简单的方式实现任何“虚拟”列。

您可以在事件内部的客户端上填写“虚拟”列。如果您将问题附加到JavaScript中的jqGrid定义和JSON数据(至少一行),这些数据将发布到客户端,那么我将向您展示更详细的方法。使用示例数据进行配置。这很好。谢谢你,奥列格。让工具栏搜索与这个虚拟列一起工作怎么样?@user537723:不客气!所有操作与在标准列中搜索时完全相同。您只需扩展服务器代码,以分析“客户机全名”作为输入字段。