У меня есть серия тестов и кейсов в базе данных. Всякий раз, когда тест устарел, он заканчивается датой окончания, и любые дополнительные случаи этого теста также должны заканчиваться датой. Я вижу два способа сделать это:
1) Измените функцию сохранения для под-случаев даты окончания.
2) Создайте приемник, который прослушивает сохраняемые тестовые модели, а затем завершает даты их подслучаев.
Есть ли какая-либо причина использовать один, а не другой?
Редактировать: Я вижу это сообщение в блоге предлагает использовать метод сохранения всякий раз, когда вы проверяете заданные значения модели. Поскольку я проверяю дату окончания, может быть, это говорит о том, что мне следует использовать пользовательское сохранение?
Edit2 : Кроме того, для записи полной иерархией является Protocol -> Test -> Case -> Planned_Execution, и каждый раз, когда end_dated, каждый дочерний элемент также должен быть endDated. Я полагаю, что в конечном итоге я сделаю одно и то же для каждого.
Edit3 : Оказывается, что для того, чтобы определить, является ли текущий 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()