我知道可以将模型方法或属性添加到序列化程序,如下所示:
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。我怎样才能做到这一点?任何建议都会有所帮助。
答案 0 :(得分:2)
为此目标,您可以使用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)