2017-10-07 49 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如果解决方案适合您,请注意并接受答案。 –

相关问题