xx

from typing import Any, Dict, List

from django.core.exceptions import FieldDoesNotExist
from django.db import models


def serialize_model(model: models.Model) -> Dict[str, Any]:
    result = {
        name: serialize_model(foreign_key)
        for name, foreign_key in model.__dict__["_state"].__dict__.get("fields_cache", {}).items()
    }
    for name, value in model.__dict__.items():
        try:
            model._meta.get_field(name)
        except FieldDoesNotExist:
            continue
        else:
            result[name] = value
    for name, queryset in model.__dict__.get("_prefetched_objects_cache", {}).items():
        result[name] = serialize_queryset(queryset)
    return result


def serialize_queryset(queryset: models.QuerySet) -> List[Dict[str, Any]]:
    return [serialize_model(model) for model in queryset]

 

posted @ 2022-04-25 10:26  一石数字欠我15w!!!  阅读(211)  评论(0)    收藏  举报