首页 > 解决方案 > Django:为同一表单的不同出现自动保存不同的默认日期?

问题描述

构建一个 Django 应用程序,在该应用程序中,一周中的每一天都需要输入体重和卡路里数据并将其保存到相应的日期。

我目前对其进行了设计,以便模板呈现周一、周二、周三等,每天都有一个表单,通过模型表单连接到相同的模式。我的问题是,auto_now日期是固定的auto_now_adddefault=today.date()即 - 如果星期一是本月的 1 日,我希望这样当用户输入他的星期二体重和卡路里时,它会自动保存到本月的 2 日。这是我的代码:

模板:

     <form method='POST'> {% csrf_token %}
     {{ mainform.as_p }}
     <input type="submit" value="save" />
     </form>
     Tuesday
     <form method='POST'> {% csrf_token %}
     {{ mainform.as_p }}
     <input type="submit" value="save" />

形式:

    class Meta:
        model = Daily_Inputs
        fields = [
            "Daily_Weight",
            "Daily_Cals",
            "Daily_Date",
        ]

看法:

    initinputz = Initial_Inputs.objects.filter(user=request.user)
    mainform = Daily_Inputs_Form()
    if request.method == 'POST':
        mainform = Daily_Inputs_Form(request.POST)
        if mainform.is_valid():
            maininstance = mainform.save(commit=False)
            maininstance.user = request.user
            maininstance.save()
 
    context = {
        'initz': initinputz,
        'mainform': mainform,
    }

    return render(request, "pages/home.html", context)

模型:

    Daily_Weight = models.DecimalField(max_digits=4, decimal_places=2, verbose_name=None, null=True)
    Daily_Cals = models.IntegerField(verbose_name=None, null=True)
    Daily_Date = models.DateField(default=date.today())
    user = models.ForeignKey(User,on_delete=models.CASCADE,default=None, null=True)

提前感谢您的任何建议。

标签: djangodjango-modelsdjango-formsdjango-viewsdjango-templates

解决方案


你应该考虑有一个隐藏的字段。因此,您将从模型中删除自动日期。

然后手动添加一个隐藏的输入字段,并在其中将日期分配给值。

<input type="hidden" value="{{week_date}}">

然后你需要一些 python 代码来获取本周的所有日期。


推荐阅读