如何在 Django Rest Framework 中动态更新视图集

How to dynamically update a viewset in Django Rest Framework

我想我只是把这段代码放错了地方,但想知道是否有人可以帮忙。我想在最后一个工作日从数据库中获取一个项目。这工作正常,但当我用 gunicorn 启动应用程序时,似乎编译了以下内容。所以现在 current_b_day 被评估为 11/13(今天 = 11/16)。但这永远不会改变。所以我的视图集将始终 return 相同的数据集,即使我通过备用过程向数据库添加新数据也是如此。如果我关闭并备份服务器,它将重新编译并获得 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 documentation,您使用的查询集仅被评估一次。
要强制对每个请求进行重新评估,您应该在 ViewSet.

中实现 get_queryset 方法

对于模型具有外键用户的简单过滤器:

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)

希望这有效!

编辑:如果它不起作用,请从链接页面复制该功能并添加您的功能。我提供了可在我们的代码库中运行的代码,因此我省略了额外的功能。