Я использую Django 1.8, с GeoDjango и PostGIS. Я использую HttpResponse
вернуть некоторые в формате GeoJSON:Серийный анализатор GeoJSON Django не сериализует все поля?
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')
В консоли это печатает code
поле просто отлично:
99N
Но GeoJSON вернулся не имеет properties.code
поле. Он имеет поля properties.name
, properties.org_type
и properties.ons_code
.
Почему это? Возможно, есть code
? Если да, то как я могу это исправить?
Может быть, «код» не существует, если он отсутствует или не имеет значения. Я вижу, что напечатанное значение на консоли «99N» появляется один раз, имеет ли список результатов только один объект? Можем ли мы увидеть весь ответ? –
Я считаю, что это * потому что * '' code'' не является допустимой частью или собственностью спецификации [GeoJSON] (http://geojson.org/geojson-spec.html#feature-objects) и недействителен для помещается в объект Feature в сериализованной форме. '' django-geojson'' делает * право * вещь здесь AFAIK. –
@ Рихард: Я приложил все усилия, чтобы ответить на ваш вопрос и с удовольствием уточню ответ, если это не поможет. Можете ли вы показать, что такое ваша модель, и результат сериализации объекта без фильтров? –