Джанго сериализуется в JSON
Вопрос
У меня есть модель (расписание) Django с классом сущности, который является родительским элементом для Activity
, который является родительским для Event
.
class Entity(models.Model):
<...>
class Activity(models.Model):
<...>
team_entity = models.ForeignKey(Entity)
<...>
class Event(models.Model):
<...>
activity = models.ForeignKey(Activity)
<...>
Как я могу сериализовать и получить как дочерний объект, так и внучатых как часть файла JSON?
Решение 2
Я сейчас использую Django-поршень. Это делает трюк.
Другие советы
Прежде чем выполнять сериализацию, при извлечении объектов для сохранения отношений используйте select_related (), чтобы получить детей, внуков и т. д.
см. http://docs.djangoproject.com/en/dev/ исх / модели / querysets /
Мне кажется, что вопрос, который задавал плакат, заключался в следующем:
Например, начиная с этих моделей:
class Entity(models.Model):
name = models.CharField(...)
class Activity(models.Model):
name = models.CharField(...)
team_entity = models.ForeignKey(Entity)
class Event(models.Model):
name = models.CharField(...)
activity = models.ForeignKey(Activity)
Результат в формате JSON.
{
"model": "Entity",
"name": "Dallas Cowboys",
"activities": [
{
"model": "Activity",
"name": "Practice"
},
{
"model": "Activity",
"name": "Game"
"events": [
{
"model": "Event",
"name": "vs Washington Redskins"
},
{
"model": "Event",
"name": "vs Green Bay Packers"
}
]
}
]
}
Таким образом, сохраняется родитель-ребенок-внук (не наследование, а обход отношений один-ко-многим). Если это не было первоначальным намерением автора, я прошу прощения ... но если это так, я бы тоже хотел получить ответ.
Ознакомьтесь с сериализацией унаследованных моделей и объектов из документации по Django, доступной по адресу http://docs.djangoproject.com/en/dev/topics/serialization/?from=olddocs#inherited-models
Это должно решить вашу проблему.
Полагаю, вы можете найти свой ответ здесь: http://code.djangoproject.com/ticket/ 4656 р>
На каком-то этапе это станет частью сериализаторов django. Прямо сейчас это должно быть в состоянии просто заменить стандартные сериализаторы django этим и работать.
это можно сделать двумя простыми строками кода:
from django.core import serializers
data = serializers.serialize("json", SomeModel.objects.all())