使用DRF和Django防止重复逻辑

时间:2017-10-13 18:46:23

标签: python django serialization django-rest-framework

我正在使用Django和Django Rest Framework与Serializer Extensions Mixin来扩展字段。我有一些计算字段,我有时只想调用以最小化我的数据库上的命中。但是,我需要能够在两个模板中(即通过模型)和序列化器(即使用DRF的serializers.MethodField + Serializer Extensions Mixin扩展功能)调用这些计算。

就目前而言,我能弄清楚如何做到这一点的唯一方法是在models.pyserializers.py中加入逻辑,因为我无法使用serializers.MethodField来调用我在models.py.中创建的方法不是很干,而且存在巨大的潜在缺陷。

当我尝试通过serializers.MethodField调用方法时,它只返回方法对象,并且不运行方法本身(即"<property object at 0x7f18d78de9a8>")。

有没有办法强制DRF仅在触发时运行models.py中的方法?如果我将它包含为serializers.ReadOnlyField,则每次调用序列化程序时都会触发它,这是我不想要的。但是,Serializer Extensions Mixin不支持serializers.ReadOnlyField.

我想我可以专门为这个实例制作一个序列化器,但这看起来过于复杂。

有什么想法吗?提前谢谢!

0 个答案:

没有答案