我知道可以向序列化器添加模型方法或属性,如下所示:
class Order(models.Model):
...
def tax_status(self, check_item_bought=True):
...
因此,要将 total_tax
添加到 OrderSerializer
,就这么简单:
class OrderSerializer(serializers.ModelSerializer):
tax_status = serializers.CharField(required=False)
class Meta:
model = Order
fields = ["tax_status", ...]
以上效果很好。但是,我需要向序列化器添加另一个 tax_status_all
字段,该字段指向相同的方法,但将 arg check_item_bought
设置为 False。我怎样才能做到这一点?任何建议都会有帮助。
最佳答案
为了实现这个目标,您可以使用 SerializerMethodField
class YourSerializer(serializers.Serializer):
tax_status = serializers.CharField(required=False)
tax_status_all = serializers.SerializerMethodField()
class Meta:
model = Order
fields = ("tax_status", "tax_status_all")
def get_tax_status_all(self, obj): # "get_" + field name
return obj.tax_status(check_item_bought=False)
关于Django Rest框架向序列化器添加模型方法两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44726838/