Ale*_*lla 2 django django-rest-framework
我知道可以将模型方法或属性添加到序列化器中,如下所示:
class Order(models.Model):
...
def tax_status(self, check_item_bought=True):
...
Run Code Online (Sandbox Code Playgroud)
因此,要添加total_tax
到OrderSerializer
,就这么简单:
class OrderSerializer(serializers.ModelSerializer):
tax_status = serializers.CharField(required=False)
class Meta:
model = Order
fields = ["tax_status", ...]
Run Code Online (Sandbox Code Playgroud)
上面的效果很好。但是,我需要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)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2426 次 |
最近记录: |