2017-10-07 8 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は、フィールドが自動的にget_item_nrに返すものに基づいて、データ型が割り当てられますSerializerMethodFieldないIntegerField になります。

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解決策があなたのために働くなら、親切にupvoteし、答えを受け入れる。 –

関連する問題