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结构中

有人知道如何克服这个问题吗

谢谢

Andrew

Django模型的继承可以获得一个。除非您无条件地要求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中获取继承的字段。我查看了序列化程序的代码,在我看来,它只处理传入的模型中的本地字段。但是我仍然在学习这个,所以我可能会误解代码。也许你可以发布你的视图代码。这将有助于找到解决办法。