首页 > 解决方案 > 序列化器字段可能命名不正确,并且与 `list` 实例上的任何属性或键都不匹配

问题描述

你好我有一个模型deals.py如下:

class deals(models.Model):

    GENDER_NAME = (
        ('M', 'Male'),
        ('F', 'Female'),
        ('O', 'Others'),
        ('A', 'All'),
    )

    AGE_RANGE = (
        ('A1', '18-25'),
        ('A2', '25-40'),
        ('A3', '40-55'),
        ('A4', '55-100'),
        ('A5', '18-100'),
        ('AL', '13-100'),
        ('T1', '13-18')
    )

    store = models.ForeignKey(storesModel, on_delete=models.CASCADE, related_name='deals_store')
    title = models.CharField(max_length=30)
    description = models.CharField(max_length=160)
    price = models.DecimalField(max_digits=6, decimal_places=2)
    category = models.ForeignKey(categoriesModel, on_delete=models.PROTECT)
    targeted_gender = models.CharField(max_length=1, choices=GENDER_NAME)
    targeted_age = models.CharField(max_length=2, choices=AGE_RANGE)
    is_active = models.BooleanField(default=False)
    created_date = models.DateField(auto_now_add=True)
    expiry_date = models.DateField(default=dt(2019, 9, 2, 11, 51, 50, 959364))

我有一个 django rest seralizer,如下所示:

class StoreActiveDealsSerializer(serializers.ModelSerializer):

    class Meta:
        model = dealsModel
        fields = '__all__'

在我看来,我试图返回一个分页响应:

data = dealsModel.objects.filter(store=storeid)
paginator = LimitOffsetPagination()
data = paginator.paginate_queryset(data, request),
print(type(data))
serializer = StoreActiveDealsSerializer(data, many=True)
print(type(serializer.data))
return paginator.get_paginated_response(serializer.data)

但是我收到以下错误:

AttributeError:尝试获取title序列化程序上的字段值时出现 AttributeError StoreActiveDealsSerializer。序列化器字段可能命名不正确,并且与list实例上的任何属性或键都不匹配。原始异常文本是:“列表”对象没有属性“标题”。

如果我尝试一个简单的 JsonResponse 它可以工作:

deals = dealsModel.objects.filter(store=storeid)
serializer = StoreActiveDealsSerializer(deals, many=True)
return JsonResponse(serializer.data, safe=False)

我如何实现分页?

标签: pythonserializationdjango-rest-framework

解决方案


我发现了我的错误:

data = paginator.paginate_queryset(data, request),

结尾有一个逗号data = paginator.paginate_queryset(data, request)


推荐阅读