我在习惯测试中保存习惯后,在进行管理测试时遇到此错误。我不知道要添加什么代码来满足“ 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}"
这些是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_date
和end_date
是DateField
,所以self.start_date
是date
对象。因此,您可以将其计算为:
@property
def duration(self):
delta = self.end_date - self.start_date
return f'{delta.days} days'