У меня есть модель (расписание) 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?






Взгляните на сериализацию унаследованных моделей и объектов из документации Django, доступной на http://docs.djangoproject.com/en/dev/topics/serialization/?from=olddocs#inherited-models
Это должно решить вашу проблему.
умник внизу прав. Я не знал, что вы не использовали select_related () в наборе запросов модели.
Прежде чем выполнять сериализацию, при извлечении ваших объектов, чтобы сохранить отношения, используйте select_related () для получения детей, внуков и т. д.
см. http://docs.djangoproject.com/en/dev/ref/models/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"
}
]
}
]
}
Таким образом, сохраняются отношения родитель-потомок-внук (не наследование, а обход отношений один-ко-многим). Если это не было намерением первоначального плаката, я прошу прощения ... но если да, то я хотел бы получить ответ и на это.
Как - конкретно - этого можно достичь?
Да, это то, что я ищу. Мне нужна группа сущностей, каждая сущность не будет иметь ни одного ко многим действиям, каждое действие не будет иметь ни одного ко многим событиям. Стивен
Это не ответ ... это уточнение вопроса.
Думаю, вы можете найти ответ здесь: http://code.djangoproject.com/ticket/4656
На каком-то этапе это станет частью сериализаторов django. Прямо сейчас он должен иметь возможность просто заменить стандартные сериализаторы django этим и работать дальше.
Сейчас использую джанго-поршень. Это трюк.
Piston можно найти на bitbucket.org/jespern/django-piston/wiki/Home - «Мини-фреймворк для Django для создания RESTful API. ... Говорит JSON, YAML, Python Pickle и XML (и HATEOAS.)»
вы можете сделать это двумя простыми строками кода:
from django.core import serializers
data = serializers.serialize("json", SomeModel.objects.all())
Спасибо, я смотрел на это на прошлой неделе. Я мог получить список сущностей, список действий и список событий. но я потерял родительские отношения. Есть какие-нибудь подсказки, что мне нужно делать?