2017-06-23 3 views
0

Ich verstehe Serialisierer, dass es möglich ist, eine Modelle Methode oder Eigenschaft zu einem Serializer hinzuzufügen, wie folgt aus:Django Rest Rahmenmodell Methode hinzufügen zweimal

class Order(models.Model): 
    ... 

    def tax_status(self, check_item_bought=True): 
     ... 

So total_tax zu einem OrderSerializer hinzuzufügen, ist es so einfach wie diese:

Klasse OrderSerializer (serializers.ModelSerializer):

tax_status = serializers.CharField(required=False) 

class Meta: 
    model = Order 
    fields = ["tax_status", ...] 

Die oben genannten Arbeiten gut. Allerdings muss ich dem Serializer ein weiteres tax_status_all-Feld hinzufügen, das auf die gleiche Methode verweist, aber das Argument check_item_bought auf False setzt. Wie kann ich das machen? Jeder Rat wird helfen.

Antwort

0

Für dieses Ziel können Sie 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) 
verwenden
Verwandte Themen