Django 将数据解析为模型而不存储
Django parse data to model without storing
我想知道是否有一种方法可以在不进行任何数据库交互的情况下将 json 解析为模型 class 的对象。
如果我们在没有 django 的情况下做我想做的事情,我可以将 Json 序列化为一个对象 class,例如在 marshmallow_dataclass
的帮助下
@dataclass
class Example:
id : int
name : str
如果我用 django 模型和序列化器来做,我用标准模型序列化器和模型来做 class:
serializer = ExampleSerializer(data=data)
serializer.is_valid(raise_exception=True)
serializer.save()
所以现在的问题是是否有办法将它们结合起来。为此,我有一个跨不同应用程序的共享模型。现在因为有些只是处理数据,没有必要存储它,我目前这样做但这是一个性能缺陷。同时,通过组合它们,我想实现不必维护具有相同字段的模型和 class。
因此,我如何使用模型 class 来解析数据而不必将它们存储在数据库中?
如果我对问题的理解正确,您希望对预定义模型 classes 进行组合验证,而无需实际使用 django 提供的必须创建模型实例的方法。
实现此目的的一种有趣方法是使用 pydantic-django
来完成此任务。
您可以创建一个 pydantic model_class 来根据需要解析数据,这将确保为您完成所有验证。
例如,如果您的示例模型如下:
class Example(models.Model):
f1 = models.CharField(max_length=255)
用于验证的相关 pydantic class 可以是:
from pydantic_django import ModelSchema
class ExampleSchema(ModelSchema):
class Config:
model = Example
我想知道是否有一种方法可以在不进行任何数据库交互的情况下将 json 解析为模型 class 的对象。 如果我们在没有 django 的情况下做我想做的事情,我可以将 Json 序列化为一个对象 class,例如在 marshmallow_dataclass
的帮助下@dataclass
class Example:
id : int
name : str
如果我用 django 模型和序列化器来做,我用标准模型序列化器和模型来做 class:
serializer = ExampleSerializer(data=data)
serializer.is_valid(raise_exception=True)
serializer.save()
所以现在的问题是是否有办法将它们结合起来。为此,我有一个跨不同应用程序的共享模型。现在因为有些只是处理数据,没有必要存储它,我目前这样做但这是一个性能缺陷。同时,通过组合它们,我想实现不必维护具有相同字段的模型和 class。 因此,我如何使用模型 class 来解析数据而不必将它们存储在数据库中?
如果我对问题的理解正确,您希望对预定义模型 classes 进行组合验证,而无需实际使用 django 提供的必须创建模型实例的方法。
实现此目的的一种有趣方法是使用 pydantic-django
来完成此任务。
您可以创建一个 pydantic model_class 来根据需要解析数据,这将确保为您完成所有验证。
例如,如果您的示例模型如下:
class Example(models.Model):
f1 = models.CharField(max_length=255)
用于验证的相关 pydantic class 可以是:
from pydantic_django import ModelSchema
class ExampleSchema(ModelSchema):
class Config:
model = Example