2017-10-07 48 views
0

我想創建一個序列化程序,它使用我的模型中的變量,並計算表中找到了多少個相同ID的數據。如何在串行器中使用自定義變量?

我創建了這一點,但它不工作:

class WebsiteSerializer(serializers.Serializer): 
    item_nr = serializers.IntegerField() 

    class Meta: 
     model = URL 
     fields = (
      "id", 
      "item", 
      "status", 
      "item_nr " 
     ) 

    def get_item_nr (self, obj): 
     obj.item_nr = Items.objects.filter(item_id=self.context.get(id)).count() 
     return obj.item_nr 

這是錯誤,我得到:

了AttributeError的試圖獲得現場item_nr 上的值時,串行器WebsiteSerializer。串行器字段可能錯誤地命名爲 ,並且不匹配URL實例上的任何屬性或密鑰。 原始異常文本爲:'URL'對象沒有屬性'item_nr'。

+0

你得到的錯誤是什麼? –

+0

請提供更多上下文的模型定義。謝謝。 – mariodev

+0

「item_nr」中有空格。 –

回答

1

items_nr將是一個SerializerMethodFieldIntegerField 字段將根據您在get_item_nr返回的內容自動分配數據類型。

class WebsiteSerializer(serializers.Serializer): 
    item_nr = serializers.SerializerMethodField() 

    class Meta: 
     model = URL 
     fields = (
      "id", 
      "item", 
      "status", 
      "item_nr " 
     ) 

    def get_item_nr (self, obj): 
     obj.item_nr = Items.objects.filter(item_id=self.context.get(id)).count() 
     return obj.item_nr 
+0

@ottomd如果解決方案適合您,請注意並接受答案。 –

相關問題