我有一系列的测试和案例放在数据库中。每当一个测试过时了,它就会被终止日期,那么任何该测试的子测试也应该被终止日期。我看到两种方法可以实现这个功能:
1)修改保存函数来结束子测试。
2)创建一个接收器监听被保存的测试模型,并终止其子测试。
有什么理由使用其中一种而不是另一种吗?
编辑: 我看到这篇博客文章建议在检查模型的给定值时使用save方法。由于我正在检查end_date,这是否意味着我应该使用自定义save?
编辑2: 此外,记录完整层次结构为:Protocol-> Test-> Case-> Planned_Execution,任何一个测试被终止日期,每个子项都必须被终止日期。 我想我最终会为每个子项执行基本相同的操作。
编辑3: 实际上为了确定当前save()是将Test设置为终止日期的,我需要访问旧数据和新数据,所以我使用了自定义save。其代码如下:
1)修改保存函数来结束子测试。
2)创建一个接收器监听被保存的测试模型,并终止其子测试。
有什么理由使用其中一种而不是另一种吗?
编辑: 我看到这篇博客文章建议在检查模型的给定值时使用save方法。由于我正在检查end_date,这是否意味着我应该使用自定义save?
编辑2: 此外,记录完整层次结构为:Protocol-> Test-> Case-> Planned_Execution,任何一个测试被终止日期,每个子项都必须被终止日期。 我想我最终会为每个子项执行基本相同的操作。
编辑3: 实际上为了确定当前save()是将Test设置为终止日期的,我需要访问旧数据和新数据,所以我使用了自定义save。其代码如下:
def save(self):
"""Use a custom save to end date any subCases"""
try:
orig = Test.objects.get(id=self.id)
enddated = (not orig.end_date) and self.end_date is not None
except:
enddated = False
super(Test, self).save()
if enddated:
for case in self.case_set.exclude(end_date__isnull=False):
case.end_date = self.end_date
case.enddater = self.enddater
case.save()