我想创建一个使用模型中变量的序列化程序,并计算在表中找到相同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
这是我得到的错误:
尝试获取字段
item_nr
的值时出现AttributeError 在序列化程序WebsiteSerializer
上。序列化程序字段可能已命名 错误且不匹配URL
实例上的任何属性或键。 原始异常文本是:'URL'对象没有属性'item_nr'。
答案 0 :(得分:1)
items_nr
将是SerializerMethodField而不是IntegerField
系统会根据您在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