将相关模型的方法放到jqgrid的一个单独的列中

编程入门 行业动态 更新时间:2024-10-28 20:22:34
本文介绍了将相关模型的方法放到jqgrid的一个单独的列中的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I am using django 1.4 together with jqgrid from django_gems package The following code is trying to bring the virtual column onto the grid by concatenating first and last name.

但是它失败了

无法将关键字 client__get_fullname 解析到字段中.

Cannot resolve keyword client__get_fullname into field.

是否有任何可接受的方法来实现这一目标?

Is there any acceptable way to achieve this?

 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 数据

OK! Let us you get the JSON data

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

并且 jqGrid 包含一个附加列

and the jqGrid contains an additional column

{name: "client__full_name", label: "full name"}

应该由 client__first_nameclient__last_name 构造.在这种情况下,最简单的方法是使用 beforeProcessing 回调函数:

which should be constructed from client__first_name and client__last_name. In the case the most simplest way would be to use beforeProcessing callback function:

$("#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;
        }
    }
});

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

The callback function beforeProcessing will be called by jqGrid after the data are received from the server and before the data will be processed. So in the simple way we can implement any "virtual" column.

这篇关于将相关模型的方法放到jqgrid的一个单独的列中的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

更多推荐

[db:关键词]

本文发布于:2023-03-28 02:37:08,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/716240.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:模型   方法   jqgrid

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!