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.
However it fails with
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
}
OK! Let us you get the JSON data
and the jqGrid contains an additional column
which should be constructed from
client__first_name
andclient__last_name
. In the case the most simplest way would be to use beforeProcessing callback function: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.