Ric*_*ard 10 python django geojson
我正在使用Django 1.8,GeoDjango和PostGIS.我HttpResponse用来返回一些GeoJSON:
from django.http import HttpResponse, JsonResponse
code = request.GET.get('q', '')
results = PCT.objects.filter(Q(code__startswith=code) |
Q(name__icontains=code))
results = results.filter(org_type='CCG')
for result in results:
print result.code
geo_field = 'boundary'
fields = ('name', 'code', 'ons_code', 'org_type', 'boundary', )
return HttpResponse(serialize('geojson', results,
geometry_field=geo_field, fields=fields),
content_type='application/json')
Run Code Online (Sandbox Code Playgroud)
在控制台中,这打印一个code字段就好了:
99N
Run Code Online (Sandbox Code Playgroud)
但返回的GeoJSON没有properties.code字段.它有一个properties.name,properties.org_type而properties.ons_code现场虽然.

为什么是这样?是code保留的名字吗?如果是这样,我该如何解决这个问题呢?
我已经快速浏览了GeoJSON规范,看起来它只能说属性字段本身就是一个JSON对象,所以我认为你在当前规范的字母中如果你想在JSON转储的那一部分.也就是说,这个规范仍处于草案形式,因此可能会发生变化(并且可能会对此字段施加额外的限制).假设你可以忍受,我们可以继续......
处理此问题的代码位于geojson序列化程序中.这当前只会为几何,类型和属性字段创建数据get_dump_object().但是你会注意到属性字段呈现了所有内容self._current.当串行器迭代对象中的其余字段时,该字段实际上是由父类的方法构建的.
到get_dump_object()调用时,self._current应该包含对象中的所有其他可序列化字段.正如您在基本序列化程序类中看到的那样,只有在构造字段时才会对字段进行序列化,serialize=True并且字段位于您传入的指定字段列表中serialize()(或者您没有指定过滤器,因此您将获得一切).因此我猜你的code字段已被声明为不可序列化,或者它有一个与你的过滤器不匹配的意外内部名称.
为了尝试解决这个问题,我想看看code你的Model 中的字段声明是否有一个错误的序列化参数,然后只是尝试序列化而没有任何字段列表.希望其中一个让你失去的领域进入JSON.
| 归档时间: |
|
| 查看次数: |
1410 次 |
| 最近记录: |