缓存查询集django rest框架的问题

时间:2017-11-24 19:29:45

标签: python django rest django-rest-framework

大家好日子,每次在API中使用REST服务时,我一直在尝试查询此查询,但只是第一次从数据库获取数据时以及数据更改时服务只会带来缓存存储数据

我的代码: urls.py

router.register(r'cron-log',views.CronLogViewSet, base_name='cron-log')

Views.py - 我的视图集类

class CronLogViewSet(viewsets.ModelViewSet):
queryset = Cron_log.objects.all().order_by('-id').values()[:5:1]
serializer_class = CronLogSerializer

Models.py来自Cron_log的模型类

class Cron_log(models.Model):
log = models.CharField(max_length=40)
time = models.CharField(max_length=40)
def as_dict(self):
    return {'log':self.log,'time':self.time}

Serializer.py序列化程序类

class CronLogSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
    model = Cron_log
    fields = ('log','time')

我在查询集之前尝试使用for,使用list(query_set),但问题仍然存在,谢谢!为了你的帮助

1 个答案:

答案 0 :(得分:0)

由于几个原因,QuerySet没有更新。 1.正在使用(env) jluc@py$ npm -v 5.5.1 参数的切片进行评估(step参数是step中的1(这是多余的,因为1是默认值 - 除非你想要触发评估))。 2.它只在类体定义中计算一次,每次初始化视图集的实例时都不会更新。有关切片的详细信息,请参阅when querysets are evaluated上的Django文档部分。

如果希望视图集始终返回限制为按降序ID排序的前5个对象的更新查询集,则一个选项是将限制切片放在[:5:1]实例方法中,该方法返回仅限于前5个结果。

get_queryset

有关详细信息,请参阅Django Rest Framework文档的filtering部分,更具体地说,请参阅views.GenericAPIView.get_queryset的实现。