json 중첩 일대 다로 직렬화 (다 대일의 반대)

GreenAsJade

각각 여러 버전이있는 여러 모듈이있는 설치가 있습니다.

로:

class Module(Models.Model):
    install = models.ForeignKey(Install)

하나의 설치에는 많은 모듈이 있습니다.

이 전체 세트를 json 구조로 직렬화하고 싶습니다.

나는 이런 식으로 직렬화 하기 위해 물건 직렬 변환기 뭉치를 사용할 수 있음을 발견했습니다 .

 serializers.serialize("json", Version.objects.all(), indent=4, 
                        relations={'module':{'relations':('install',)}})

그러나 이것은 내부에서 시작됩니다 (다 대일보기-많은 버전에 하나의 모듈이 있지만 각 모듈에 어떤 버전이 있는지 알고 싶습니다). 각 버전이 모듈이라고 부르는 최상위 버전의 버전 목록을 가져 오므로 각 모듈이 여러 번 나열됩니다.

[
    {
        "pk": 1, 
        "model": "cmh_server.version", 
        "fields": {
            "name": "v1", 
            "module": {
                "pk": 1, 
                "model": "cmh_server.module", 
                "fields": {
                    "install": {
                        "pk": 1, 
                        "model": "cmh_server.install", 
                        "fields": {
                            "name": "CMBN"
                        }
                    }, 
                    "name": "CMBN", 
                }
            }
        },
        "pk": 2, 
        "model": "cmh_server.version", 
        "fields": {
            "name": "v1.1", 
            "module": {
                "pk": 1, 
                "model": "cmh_server.module", 
                "fields": {
                    "install": {
                        "pk": 1, 
                        "model": "cmh_server.install", 
                        "fields": {
                            "name": "CMBN"
                        }
                    }, 
                    "name": "CMBN", 
                }
            }
        }
    }
]

동일한 모듈이 어떻게 두 번 나열되는지 확인하십시오. 그건 맞지 않습니다".

나는 다음과 같은 것을 말하고 싶다.

serializers.serialize("json", Install.objects.all(), indent=4, 
                      relations={'module':{'relations':('version',)}})

하지만 설치 모델에는 "모듈"이라는 필드가 없기 때문에 물론 작동하지 않습니다.

zaphod100.10

django rest 프레임 워크를 사용해 볼 수 있습니다.

모듈 모델 및 버전 모델에 대한 모델 직렬 변환기를 정의하십시오.

class VersionSerializer(serializers.ModelSerializer):
    class Meta:
        model = Version

class ModuleSerializer(serializers.ModelSerializer):
    versions = VersionSerializer(many=True)
    class Meta:
        model = Module
        fields = ('id', ..... , 'versions')

이제 설치 모델 직렬화기를 정의하십시오.

class InstallSerializer(serializers.ModelSerializer):
    modules = ModuleSerializer(many=True)
    class Meta:
        model = Install
        fields = ('id', ..... , 'modules')

이렇게하면 각 설치에 대한 모든 모듈과 설치의 각 모듈에 대한 모든 버전으로 설치 데이터가 직렬화됩니다.

편집하다:

언급하는 것을 잊었습니다. 관련 모델의 필드 이름은 외래 키 필드의 related_name 값과 동일해야합니다.

예를 들어 모듈 모델에서 :

class Module(Models.Model):
    install = models.ForeignKey(Install, related_name='modules')

이제 serializer에서 필드 이름으로 '모듈'을 사용해야합니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

JSON 레일이있는 중첩 된 속성 일대 다

분류에서Dev

Play Json Reads 중첩 된 일반 직렬화 된 Json

분류에서Dev

json을 제대로 역 직렬화 할 수 없습니다.

분류에서Dev

중첩 클래스에 대한 JSON (역) 직렬화

분류에서Dev

Newtonsoft JSON이 내 json 파일의 중첩 된 개체를 역 직렬화하지 않습니다.

분류에서Dev

Django 나머지 프레임 워크 중첩 직렬화가 제대로 작동하지 않습니다.

분류에서Dev

WebApi는 직렬화 된 객체 대신 빈 JSON을 반환합니다.

분류에서Dev

Django Rest에서 중간 모델로 다 대다 관계 직렬화

분류에서Dev

다 대다 필드 직렬화 문제

분류에서Dev

동일한 객체에 대한 XML 직렬화 다른 elementName

분류에서Dev

Java 효율적인 직렬화 가능한 다 대일 맵

분류에서Dev

JavaScriptSerializer로 JSON 문자열을 역 직렬화하여 키 및 값 배열 대신 단일 동적 객체를 반환합니다.

분류에서Dev

JSON 객체는 JsonResult를 사용하여 반환 될 때 빈 대괄호로 직렬화됩니다.

분류에서Dev

c # 중첩 된 Json 역 직렬화는 null을 반환합니다.

분류에서Dev

json_decode가 제대로 역 직렬화 할 수 없습니다.

분류에서Dev

Json .Net은 플랫 객체를 복잡한 객체로 직렬화합니다 (직렬화 / 역 직렬화에 대한 객체 구조 변경).

분류에서Dev

다단계 중첩으로 JSON 역 직렬화

분류에서Dev

다중 로케일 사이트의 다른 로케일에 대한 디자인 대화 상자

분류에서Dev

각 키 값에 대해 다른 개체 유형을 사용하여 JSON 파일 역 직렬화

분류에서Dev

다중 파일에 대한 json 출력

분류에서Dev

중첩 된 속성으로 일대 다 모델 저장

분류에서Dev

중첩 된 일대 다 관계에 대한 고유 한 제약

분류에서Dev

중첩 된 일대 다 관계에 대한 Java 8 Collector 체인

분류에서Dev

Julia의 N xd 행렬에 대한 일반 중첩 for 루프

분류에서Dev

Django의 중첩 된 다 대다 관계

분류에서Dev

Elasticsearch : 중첩 필드에 대한 다중 일치 쿼리

분류에서Dev

Java의 Jackson JSON 직렬화-속성 이름에 중첩되는 대신 루트에 k / v 쌍 쓰기

분류에서Dev

LISP의 깊은 중첩 목록은 내 목록의 일부에 대해 #을 반환합니다.

분류에서Dev

JSON 값은 다른 파일의 조회로 대체됩니다.

Related 관련 기사

  1. 1

    JSON 레일이있는 중첩 된 속성 일대 다

  2. 2

    Play Json Reads 중첩 된 일반 직렬화 된 Json

  3. 3

    json을 제대로 역 직렬화 할 수 없습니다.

  4. 4

    중첩 클래스에 대한 JSON (역) 직렬화

  5. 5

    Newtonsoft JSON이 내 json 파일의 중첩 된 개체를 역 직렬화하지 않습니다.

  6. 6

    Django 나머지 프레임 워크 중첩 직렬화가 제대로 작동하지 않습니다.

  7. 7

    WebApi는 직렬화 된 객체 대신 빈 JSON을 반환합니다.

  8. 8

    Django Rest에서 중간 모델로 다 대다 관계 직렬화

  9. 9

    다 대다 필드 직렬화 문제

  10. 10

    동일한 객체에 대한 XML 직렬화 다른 elementName

  11. 11

    Java 효율적인 직렬화 가능한 다 대일 맵

  12. 12

    JavaScriptSerializer로 JSON 문자열을 역 직렬화하여 키 및 값 배열 대신 단일 동적 객체를 반환합니다.

  13. 13

    JSON 객체는 JsonResult를 사용하여 반환 될 때 빈 대괄호로 직렬화됩니다.

  14. 14

    c # 중첩 된 Json 역 직렬화는 null을 반환합니다.

  15. 15

    json_decode가 제대로 역 직렬화 할 수 없습니다.

  16. 16

    Json .Net은 플랫 객체를 복잡한 객체로 직렬화합니다 (직렬화 / 역 직렬화에 대한 객체 구조 변경).

  17. 17

    다단계 중첩으로 JSON 역 직렬화

  18. 18

    다중 로케일 사이트의 다른 로케일에 대한 디자인 대화 상자

  19. 19

    각 키 값에 대해 다른 개체 유형을 사용하여 JSON 파일 역 직렬화

  20. 20

    다중 파일에 대한 json 출력

  21. 21

    중첩 된 속성으로 일대 다 모델 저장

  22. 22

    중첩 된 일대 다 관계에 대한 고유 한 제약

  23. 23

    중첩 된 일대 다 관계에 대한 Java 8 Collector 체인

  24. 24

    Julia의 N xd 행렬에 대한 일반 중첩 for 루프

  25. 25

    Django의 중첩 된 다 대다 관계

  26. 26

    Elasticsearch : 중첩 필드에 대한 다중 일치 쿼리

  27. 27

    Java의 Jackson JSON 직렬화-속성 이름에 중첩되는 대신 루트에 k / v 쌍 쓰기

  28. 28

    LISP의 깊은 중첩 목록은 내 목록의 일부에 대해 #을 반환합니다.

  29. 29

    JSON 값은 다른 파일의 조회로 대체됩니다.

뜨겁다태그

보관