[异常值:未定义名称'起始日期'

问题描述 投票:1回答:1

我在习惯测试中保存习惯后,在进行管理测试时遇到此错误。我不知道要添加什么代码来满足“ start_date”的定义。您能告诉我我哪里出问题了。

异常值:名称'start_date'未定义异常位置://持续时间//models.py,第20行这是一个= datetime.strptime(str(start_date),date_format)

class Habit(models.Model):
    name = models.CharField(max_length=60)
    goal_nbr = models.IntegerField(default=0, null=True, blank=True)
    goal_description = models.CharField(max_length=60, null=True, blank=True)
    start_date = models.DateField(null=True, blank=True)
    end_date = models.DateField(null=True, blank=True)
    created_at = models.DateTimeField(auto_now_add=True)
    updated_at = models.DateTimeField(auto_now=True)
    user = models.ForeignKey(
        User, related_name="habit", on_delete=models.CASCADE)

    @property
    def duration(self):
        date_format = "%m/%d/%Y"
        a = datetime.strptime(str(start_date), date_format)
        b = datetime.strptime(str(end_date), date_format)
        delta = b - a
        return f'{ delta } days'

    def __str__(self):
        return f"Goal Name: {self.name} Goal Target: {self.goal_nbr} Description: {self.goal_description} Duration: {self.duration} days Beginning: {self.start_date} Ending: {self.end_date}"
python django
1个回答
3
投票

这些是self对象的属性,而不是您可以访问的名称:

    @property
    def duration(self):
        date_format = '%m/%d/%Y'
        a = datetime.strptime(str(self.start_date), date_format)
        b = datetime.strptime(str(self.end_date), date_format)
        delta = b - a
        return f'{ delta } days'

也就是说,由于start_dateend_dateDateField,所以self.start_datedate对象。因此,您可以将其计算为:

    @property
    def duration(self):
        delta = self.end_date - self.start_date
        return f'{delta.days} days'
© www.soinside.com 2019 - 2024. All rights reserved.