我正在使用Django和Django Rest Framework与Serializer Extensions Mixin来扩展字段。我有一些计算字段,我有时只想调用以最小化我的数据库上的命中。但是,我需要能够在两个模板中(即通过模型)和序列化器(即使用DRF的serializers.MethodField
+ Serializer Extensions Mixin扩展功能)调用这些计算。
就目前而言,我能弄清楚如何做到这一点的唯一方法是在models.py
和serializers.py
中加入逻辑,因为我无法使用serializers.MethodField
来调用我在models.py.
中创建的方法不是很干,而且存在巨大的潜在缺陷。
当我尝试通过serializers.MethodField
调用方法时,它只返回方法对象,并且不运行方法本身(即"<property object at 0x7f18d78de9a8>"
)。
有没有办法强制DRF仅在触发时运行models.py
中的方法?如果我将它包含为serializers.ReadOnlyField
,则每次调用序列化程序时都会触发它,这是我不想要的。但是,Serializer Extensions Mixin不支持serializers.ReadOnlyField.
我想我可以专门为这个实例制作一个序列化器,但这看起来过于复杂。
有什么想法吗?提前谢谢!