Всем доброго дня.
появился такой вопрос при использовании отношений и json.
Имеем простое отношение:
class Category(models.Model):
name = models.CharField(max_length=150, null=False, verbose_name='Название', default='')
class Page(models.Model):
name = models.CharField(max_length=150, null=False, default='')
text = models.TextField(null=False)
category = models.ForeignKey(Category, default=0, null=False)
Есть довольной просто код с небольшим хаком для сериализации:
class to_json(Serializer):
def end_serialization(self):
# little hack
cleaned_objects = []
for obj in self.objects:
pk = obj['pk']
obj = obj['fields']
if obj.has_key('text'):
del obj['text']
obj['id'] = pk
cleaned_objects.append(obj)
simplejson.dump(cleaned_objects, self.stream, cls=DjangoJSONEncoder, **self.options)
В итогде хочу получить что-то такое на выходе:
{'success' : 1, 'data': [{"category": 4, "name": "info block", "text": "...", "id": 46, "category_name" : "catname"] }
Делаю:
pages = Page.objects.filter().select_related('category').extra(select={'category_name': "page_category.name"}).order_by(sort)[start:limit]
j = to_json()
s = j.serialize(pages)
return HttpResponse("{'success' : 1, 'data': %s }" % (s))
в результате category_name пропадает в выводе simplejson.
Возможно кто нибудь сможет подсказать как это лечиться\обходиться ?
PS немного не хватает кнопки preview для просмотра сообщения перед отправкой