python - 如何反序列化 django 模型对象?
问题描述
我对 python 和从 Java 过渡还很陌生,所以我将使用 Java 术语,因为我需要知道它的等效 python 版本。
所以我有一个如下所述的 Django 模型:
class Order(models.Model) :
order_id = models.TextField(null=False, blank=False)
is_completed = models.BooleanField(null=False, blank=False, default=False)
我也有一个卡夫卡经纪人来处理这些订单。为了将这些推送到 kafka 队列中,我将它们转换为 JSON 对象,如下所示:
from django.core import serializers
serialized_obj = serializers.serialize('json', [order])
print("Pushing to kafka topic ", "some_topic")
print(serialized_obj)
send_message("some_topic", serialized_obj)
现在我需要将这个 JSON 对象转换回 Django 模型对象,在Java中我们有一个叫做Jackson的东西,它可以为我做同样的事情,但我不知道如何在 Python3 中做到这一点。
我尝试了下面的代码片段,它返回给我一个类型的对象<generator object Deserializer at 0x7fe000323bf8>
# consumer.py
try:
print(json.loads(msg.value()))
print("---------------------------------")
obj = serializers.deserialize("json", msg.value())
print(obj)
except Exception as e:
import traceback
print(traceback.format_exc())
如何在 Python3 中实现这一点?
解决方案
首先序列化对象这样做:
from django.core import serializers
d = serializers.serialize('json', Order.objects.all()) # serialize all the objects in Order model
从它反序列化对象
for obj in serializers.deserialize('json', d):
print(obj.object) ## return the django model class object
serializers.deserialize()
给出一个反序列化对象
要获取更多详细信息,请参阅Django 对象反序列化
推荐阅读
- python - 如何以及在哪里为 django web 应用程序在服务器中运行(重)功能/在哪里存储它们
- python - Django过滤和更新原子性
- python - Django 'TestMiddleware' 对象没有属性 'get_response'
- java - JPA 查询不返回任何数据
- ios - 切换文本字段的 maxLength
- maven - 在 IntelliJ 中将多个 Maven 项目组合到一个存储库中
- python-3.x - TypeError:“dict”对象不可使用 OrderedDict 和多重继承调用
- ckeditor - ckeditor 5 禁用内容过滤
- sql - 如何从 Arrays PostgreSQL 的列中获取唯一值
- gradle - 执行Gradle编译的jar,导致“没有主类”