Django 모델 개체를 해당 필드가 모두 포함된 사전으로 어떻게 변환합니까? 편집 가능으로 표시된 필드 및 외래 키를 포함한 필드=False?
이를 달성하는 방법에는 여러 가지가 있습니다.
instance.__dict__
그러나 이 접근 방식에는 관련 없는 속성이 포함되어 있으며 다대다 관계가 포함되지 않을 수 있습니다.
from django.forms.models import model_to_dict model_to_dict(instance)
이 방법은 다대다 관계를 캡처하지만 편집할 수 없는 필드는 제외합니다.
from itertools import chain def to_dict(instance): opts = instance._meta data = {} for f in chain(opts.concrete_fields, opts.private_fields): data[f.name] = f.value_from_object(instance) for f in opts.many_to_many: data[f.name] = [i.id for i in f.value_from_object(instance)] return data
이 함수는 외래 키 ID 및 다대다 관계를 포함한 모든 필드를 검색합니다.
from rest_framework import serializers class SomeModelSerializer(serializers.ModelSerializer): class Meta: model = SomeModel fields = "__all__" SomeModelSerializer(instance).data
모델 직렬 변환기는 포괄적인 표현을 제공하지만 날짜/시간 객체를 항상 정확하게 반환하는 것은 아닙니다.
콘솔에서 모델 표현을 향상하려면 기본 모델 클래스를 정의하세요.
from django.db import models from itertools import chain class PrintableModel(models.Model): def __repr__(self): return str(self.to_dict()) def to_dict(instance): # ... (same code as in the Custom Function) class Meta: abstract = True
이 기본 모델에서 상속하여 기본 모델 표현 대신 사전을 자동으로 인쇄합니다.
위 내용은 Django 모델 객체를 외래 키와 `editable=False` 필드를 포함한 모든 필드가 있는 사전으로 어떻게 변환합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!