You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将用户特定的历史预测数据作为默认值填充到新Django表单中

解决方案

核心实现逻辑是重写PredictionWeek2CreateView的get_initial方法,该方法返回的字典会作为表单字段的初始预填值,全程不会修改PredictionWeek1的已有数据,两个周的预测数据完全独立,符合积分计算的隔离要求。

修改后的PredictionWeek2CreateView代码如下:

class PredictionWeek2CreateView(LoginRequiredMixin, CreateView):
    model = PredictionWeek2
    fields = ['prediction1', 'prediction2', 'prediction3', 'prediction4', 'prediction5']

    # 新增该方法设置表单初始值
    def get_initial(self):
        initial = super().get_initial()
        # 读取当前用户第一周的预测数据
        week1_data = PredictionWeek1.objects.filter(user=self.request.user).first()
        if week1_data:
            # 把第一周的预测值同步给第二周表单作为初始值
            initial['prediction1'] = week1_data.prediction1
            initial['prediction2'] = week1_data.prediction2
            initial['prediction3'] = week1_data.prediction3
            initial['prediction4'] = week1_data.prediction4
            initial['prediction5'] = week1_data.prediction5
        return initial

    def form_valid(self, form):
        form.instance.user = self.request.user
        return super().form_valid(form)

额外优化建议

如果后续要扩展到更多周的预测,不需要每周单独建模型,可以在通用预测模型里新增week_number整数字段标识周数,所有周的预测数据存在同一张表,通过周数字段区分,能大幅减少重复代码。

内容的提问来源于stack exchange,提问作者plastic_bertrand

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 21:24:04