jqgrid和django模型
我有以下型号jqgrid和django模型,django,jqgrid,Django,Jqgrid,我有以下型号 class Employee(Person): job = model.Charfield(max_length=200) class Address(models.Model): street = models.CharField(max_length=200) city = models.CharField(max_length=200) class EmpAddress(Address): date_occupied = models.DateFiel
class Employee(Person):
job = model.Charfield(max_length=200)
class Address(models.Model):
street = models.CharField(max_length=200)
city = models.CharField(max_length=200)
class EmpAddress(Address):
date_occupied = models.DateField()
date_vacated = models.DateField()
employee = models.ForeignKey()
当我使用django Serializer为EmpAddress对象构建json数据结构时,它不包括继承的字段,只包括EmpAddress字段。我知道这些字段在我的视图中的对象中是可用的,因为我可以打印它们,但它们没有内置到json结构中
有人知道如何克服这个问题吗
谢谢AndrewDjango模型的继承可以获得一个。除非您无条件地要求EmpAddress是Address的子类,否则您可能只想复制字段,让duck类型处理您没有遵循传统面向对象设计的事实。例如:
class Address(models.Model):
street = models.CharField(max_length=200)
city = models.CharField(max_length=200)
class EmpAddress(Address):
street = models.CharField(max_length=200)
city = models.CharField(max_length=200)
date_occupied = models.DateField()
date_vacated = models.DateField()
employee = models.ForeignKey()
您可能会尝试的另一种方法是使用(我是开发人员之一),它比标准json模块“更智能”。由于。请查看:作为问题的解决方案。完整序列化程序允许您深入到所需的foreignkey关系。我编写了一个教程示例,介绍如何使用它将django与JqGrid集成,它提供了一个示例,说明了您所面临的问题。希望这有帮助。约翰
这是我和模型一起使用的视图代码
def address_grid(request):
employeeId = request.GET.get('employeeId')
if request.GET.get('sidx') == '':
order = 'date_occupied'
else:
order = request.GET.get('sidx')
if request.GET.get('sord') == 'asc':
sort_order = ''
else:
sort_order = '-'
order = sort_order + order
if request.GET.get('page'):
paginated = int(request.GET.get('page'))
else:
paginated = 1
items = int(request.GET.get('rows'))
addresses = EmpAddress.objects.filter(employee__id=employeeId)
for add in addresses:
log.write(add.city+'\n') # Field from address object
total = adresses.all().count()
if total % items > 0:
items_sum = 1
else:
items_sum = 0
pages = total / items + items_sum
if paginated > pages:
paginated = 1
addresses = addresses.order_by(order)[paginated-1)*items:paginated*items]
rows = serializers.serialize("json", addresses, indent=4,)
addresses = '{total:%(pages)s, page:%(page)s, records:%(total)s, rows:%(addresses)s' \
% {'pages':pages, 'page':paginated, 'total':total, 'addresses':rows}
log.write(rows+'\n') #json object no Address fields (city is not included)
#even it is present above
return HttpResonse(addresses, mimetype="application/json")
当我打印地址对象后,address=EmpAddress.objects.filter(employee\uu id=employeeId)
第I行有所有对象属性(地址和EmpAddress字段)
但是当我打印json对象时,我只有EmpAddress对象属性,不包括Address属性。这些不是我的模型,我只是在使用它们,所以它们需要保持原样。不过,我会看看jsonpickle。谢谢。这就是我基于一个实例的例子,它确实适用于外键,但它忽略了继承。如果我在序列化程序中使用relations参数,我会获取所有员工数据,但不会从Address中获取继承的字段。我查看了序列化程序的代码,在我看来,它只处理传入的模型中的本地字段。但是我仍然在学习这个,所以我可能会误解代码。也许你可以发布你的视图代码。这将有助于找到解决办法。