Python 序列化程序字段的名称可能不正确,并且与'list'实例上的任何属性或键都不匹配
您好,我有一个型号Python 序列化程序字段的名称可能不正确,并且与'list'实例上的任何属性或键都不匹配,python,serialization,django-rest-framework,Python,Serialization,Django Rest Framework,您好,我有一个型号deals.py,如下所示: class deals(models.Model): GENDER_NAME = ( ('M', 'Male'), ('F', 'Female'), ('O', 'Others'), ('A', 'All'), ) AGE_RANGE = ( ('A1', '18-25'), ('A2', '25-40'),
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))
class StoreActiveDealsSerializer(serializers.ModelSerializer):
class Meta:
model = dealsModel
fields = '__all__'
我有一个django rest seralizer,如下所示:
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))
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:尝试获取序列化程序StoreActiveDeasserializer
上的字段title
的值时,获取了AttributeError。
序列化程序字段的名称可能不正确,并且与列表
实例上的任何属性或键都不匹配。
原始异常文本为:“列表”对象没有属性“标题”
如果我尝试一个简单的JsonResponse,它会起作用:
deals = dealsModel.objects.filter(store=storeid)
serializer = StoreActiveDealsSerializer(deals, many=True)
return JsonResponse(serializer.data, safe=False)
如何在这种情况下实现分页?我发现了错误:
data = paginator.paginate_queryset(data, request),
在data=paginator.paginate\u queryset(数据,请求)