Вопрос

У меня есть модель (расписание) 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())
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top