문제

엔터티 클래스와 함께 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-piston을 사용합니다. 이것은 트릭을합니다.

다른 팁

직렬화를하기 전에, 물체를 검색 할 때, 관계를 유지하기 위해 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"
                }
            ]
        }
    ]
}

따라서 부모-자녀-손자를 유지합니다 (내재가 아니라 일대일 관계가 가로). 이것이 초기 포스터의 의도가 아니라면 사과합니다. 그러나 그렇다면 이에 대한 답을 원합니다.

이용 가능한 Django 문서의 Serializing 상속 모델 및 객체를 살펴보십시오. 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