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_fullnameinto 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_nameandclient__last_name. In the case the most simplest way would be to use beforeProcessing callback function:The callback function
beforeProcessingwill 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.