使用DRF和Djang防止重复逻辑

2024-04-26 23:41:12 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用Django和Django Rest框架以及序列化程序扩展Mixin来扩展字段。我有一些计算字段,我只想调用有时尽量减少点击我的数据库。但是,我需要能够在两个模板(即通过模型)和序列化程序(即使用DRF的serializers.MethodField+序列化程序扩展Mixin expand特性)中调用这些计算。你知道吗

从目前的情况来看,我唯一能弄清楚如何做到这一点的方法是将逻辑同时包含在models.pyserializers.py中,因为我不能使用serializers.MethodField来调用我在models.py.中创建的方法,它不是很枯燥,而且是一个巨大的潜在缺陷。你知道吗

当我试图通过serializers.MethodField调用方法时,它只返回method对象,而不运行方法本身(即"<property object at 0x7f18d78de9a8>")。你知道吗

有没有办法强制DRF只在触发时运行models.py中的方法?如果我将它作为serializers.ReadOnlyField包含,它将在每次调用序列化程序时触发,我不希望这样。但是,序列化程序扩展Mixin不支持serializers.ReadOnlyField.

我想我可以专门为这个实例创建一个序列化程序,但这似乎过于复杂了。你知道吗

有什么想法吗?提前谢谢!你知道吗


Tags: django方法py程序框架模板rest数据库