2014-08-29 5 views
1

Вот мое мнение:<Джанго Object>: не JSON сериализации

def display_maps(request): 
#query_agao = ButuanMaps.objects.filter(clandpin=search_term) 
#x = Owner.objects.select_related('landproperty_butuanmaps').get(id=5) 
query_agao = ButuanMaps.objects.all().select_related('landproperty')[:10] 
query_all = ButuanMaps.objects.all()[:10] 
djf = Django.Django(geodjango='geom', properties=['id','clandpin','ssectionid']) 
geoj = GeoJSON.GeoJSON() 
butuan_agao = geoj.encode(djf.decode(query_agao.transform(3857))) 
return render(request, "index.html", { 
    'butuan_agao': butuan_agao, 
    'query_agao': query_agao, 
    'query_all': query_all}) 

id и clandpin не ForeignKey, но ssectionid.

Итак, как сериализовать внешние ключи?

ответ

1

Вы можете использовать класс сериализаторы так:

from django.core import serializers 
query_agao = ButuanMaps.objects.all().select_related('landproperty')[:10] 
json_serialized_objects = serializers.serialize("json", query_agao) 

если вы хотите сериализовать несколько полей сделать это:

json_serialized_objects = serializers.serialize("json", query_agao, fields=("fieldname1", "fieldname2")) 

где FIELDNAME1 и FIELDNAME2 являются атрибутами landproperty класса модели.

В качестве альтернативы вы можете написать собственный сериализатор для своего класса landproperty и использовать его во время вызова render.

+0

Спасибо! Я попробовал это, но он вернул ошибку, «объект str» не имеет атрибута «transform» –

+0

, вы можете проверить, является ли query_agao объектом запроса (он не должен быть единственным объектом модели), это будет полезно, если вы сможете опубликовать трассировка стека. – Shivansh

Смежные вопросы