각각 여러 버전이있는 여러 모듈이있는 설치가 있습니다.
로:
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',)}})
하지만 설치 모델에는 "모듈"이라는 필드가 없기 때문에 물론 작동하지 않습니다.
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] 삭제
몇 마디 만하겠습니다