django의 모델to_dict
1828 단어 django
def model_to_dict(instance, fields=None, exclude=None):
"""
Returns a dict containing the data in ``instance`` suitable for passing as
a Form's ``initial`` keyword argument.
``fields`` is an optional list of field names. If provided, only the named
fields will be included in the returned dict.
``exclude`` is an optional list of field names. If provided, the named
fields will be excluded from the returned dict, even if they are listed in
the ``fields`` argument.
"""
from django.db import models
opts = instance._meta
data = {}
for f in chain(opts.concrete_fields, opts.private_fields, opts.many_to_many):
if not getattr(f, 'editable', False):
continue
if fields and f.name not in fields:
continue
if exclude and f.name in exclude:
continue
data[f.name] = f.value_from_object(instance)
# Evaluate ManyToManyField QuerySets to prevent subsequent model
# alteration of that field from being reflected in the data.
if isinstance(f, models.ManyToManyField):
data[f.name] = list(data[f.name])
return data
@total_ordering
@python_2_unicode_compatible
class Field(RegisterLookupMixin):
# " ..."
def value_from_object(self, obj):
"""
Returns the value of this field in the given model instance.
"""
return getattr(obj, self.attname)
위에는django중모델to_dict의 원본 코드는 주석을 통해 우리는 이 방법의 작용을 매우 잘 알 수 있다. 그러나 실체 프로젝트에서 dict를 구성하는 방식을 반환값으로 하는 것에 습관이 되었기 때문에 대부분의 경우 우리는 그것을 생각하지 못한다. 그래서 나는 그를 잊었지만 그 편리함을 소홀히 해서는 안 된다.
장면 작업
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Django의 질문 및 답변 웹사이트환영 친구, 이것은 우리의 새로운 블로그입니다. 이 블로그에서는 , 과 같은 Question-n-Answer 웹사이트를 만들고 있습니다. 이 웹사이트는 회원가입 및 로그인이 가능합니다. 로그인 후 사용자는 사용자의 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.