除了名称和一个变量外,我有这两种相同的方法,这真的让我很烦恼,但无论我做什么,我都无法弄清楚如何制作它,所以我只需将一个变量传递给 django 中的一个方法。这是两种方法,如果需要,我可以发布模型,但我很确定所需的所有信息都在这里,但为了清楚起见,两个模型字段是“启动”、“员工试用”和“已发布”这三个都只是日期,所有其他变量都在方法中创建:
@property
def progress_launch(self):
timeline = self.launch - self.published.date()
current = self.launch - datetime.now().date()
if timeline < current:
percentage == 100
else:
percentage = 100 - round((current/timeline) * 100)
min_bar = 1
max_bar = 100
if percentage is not None:
if percentage < min_bar:
return min_bar
elif percentage > max_bar:
return percentage
else:
percentage = max_bar
return percentage
@property
def progress_trials(self):
timeline = self.staff_trials - self.published.date()
current = self.staff_trials - datetime.now().date()
if timeline < current:
percentage == 100
else:
percentage = 100 - round((current/timeline) * 100)
min_bar = 1
max_bar = 100
if percentage is not None:
if percentage < min_bar:
return min_bar
elif percentage > max_bar:
return percentage
else:
percentage = max_bar
return percentage
我试图这样做:
def progress_launch(self):
return percent(trials)
def progress_trials(self):
return percent(launch)
def percent(_progress)
timeline = _progress - self.published.date()
current = _progress - datetime.now().date()
if timeline < current:
percentage == 100
else:
percentage = 100 - round((current/timeline) * 100)
min_bar = 1
max_bar = 100
if percentage is not None:
if percentage < min_bar:
return min_bar
elif percentage > max_bar:
return percentage
else:
percentage = max_bar
return percentage
但是当然没有用。这两种方法效果很好,只是看起来很糟糕,而且这个特定的模型变得相当大。我很欣赏这更有可能是一个 OOP 问题(这就是为什么我首先开始学习 django 来学习 OOP),因为不幸的是,这就是我仍在苦苦挣扎的地方。非常感谢以更好的方式重构此代码的任何帮助。我无法发布任何错误消息,因为它们太多了,但它们都是关于未定义的变量。