我想我只是将代码放在错误的位置,但是想知道是否有人可以在这里提供帮助。我想在最后一个工作日从数据库中获取项目。这工作正常,但当我使用gunicorn启动应用程序时,似乎以下内容得到编译。所以现在current_b_day的评估值为11/13(今天= 11/16)。但这永远不会改变。因此,即使我通过替代过程将新数据添加到数据库中,我的视图集也将始终返回相同的数据集。如果我关闭服务器并进行备份,它将重新编译并获得current_b_day的新值。任何帮助深表感谢!
views.py
from pandas.tseries.offsets import BDay, BMonthEnd, BYearEnd
from datetime import date, datetime
class YieldCurveViewSet(viewsets.ModelViewSet):
current = date.today()
current_b_day = current - BDay(1) #This never changes and is compiled in!
queryset = YieldCurve.objects.filter(create_date=current_b_day)
serializer_class = YieldCurveSerializer
根据Django Rest Framework文档,您使用的查询集仅被评估一次。
要为每个请求强制重新评估,您应该在中实施get_queryset
方法ViewSet
。
对于模型具有外键用户的简单过滤器:
def get_queryset(self):
return YieldCurve.objects.filter(user = self.request.user)
或您的情况:
def get_queryset(self):
current = date.today()
current_b_day = current - BDay(1)
return YieldCurve.objects.filter(create_date=current_b_day)
希望这有效!
编辑:如果不起作用,请从链接的页面复制功能并添加功能。我提供了可以在我们的代码库中使用的代码,因此我省略了额外的功能。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句