我有一个Django网站,我们在那里有一些字段可以动态获取CurrentWeek和CurrentDate。
问题:考虑4月23日,我启动了服务器(使用
python manage.py runserver),那么我正确地获取了CurrentWeek和CurrentDate。此外,如果我检查到明天(4月24日)是否已经在运行昨天的(4月23日)服务器命令,则现在仍将昨天的(4月23日)日期作为CurrentWeek和CurrentDate,而不是今天(4月24日)。

我尝试将时区更改为亚洲/加尔各答,而我的settings.py
这些:

USE_I18N = True

USE_L10N = True

USE_TZ = True


emailinfo.py

from datetime import date

weekNumber = date.today().isocalendar()[1]

currentweek = "week"+str(weekNumber)



models.py

from django.db import models
from Taskmanager.email_info import currentweek

class Taskmanager(models.Model):
    CurrentSprint = models.CharField(max_length=10,
                                     default=currentweek,
                                     choices=week_number)
    todaydate = models.DateField()


表格

class Tasksadd(forms.ModelForm):
    todaydate = forms.DateField(widget=forms.SelectDateWidget,
                                initial=datetime.date.today())
    class Meta:
        model = Taskmanager
        fields = [
                  'CurrentSprint', 'todaydate',
                 ]


task-create.html

<div class="container">
    <div class="row ml-auto">
        <div class="col-sm-offset-3 col-sm-6">
                 <form method="POST" action=".">
                  {% csrf_token %}
                   </br>
                    <h3>Add tasks here:</h3>
                      {{ form|crispy }}
                         <input type="submit" name="submit"
                             class="btn btn-info"
                             placeholder="Submit">
                  </form>
               </div>
        </div>
 </div>



我希望无论何时创建任务,都需要CurrentWeek和CurrentDate字段动态地填充特定日期的当前日期。但是,它需要我启动服务器的日期。

最佳答案

currentweek应该是一个函数,例如:

from datetime import date

def currentweek():
    weekNumber = date.today().isocalendar()[1]
    return "week{}".format(weekNumber)


在您的情况下,currentweek是一个常数,该常数在服务器启动时仅计算一次,因此开发工作没有任何问题,因为您每天都在启动。

10-08 14:39