Форум сайта python.su
models.py
class Course(models.Model): title = models.CharField(max_length=100) department = models.ForeignKey(Department, blank=True) start_date = models.DateField(blank=True, null=True) end_date = models.DateField(blank=True, null=True) class Course_event(models.Model): title = models.ForeignKey(Course) date_time = models.DateTimeField(blank=True, null=True) def save(self, *args, **kwargs): course = self.title if course.start_date and course.end_date: #some code course.save() super(Course_event, self).save(*args, **kwargs)
Отредактировано terrrible (Май 22, 2013 12:40:35)
Офлайн
Дык у Вас же и стоит
if course.start_date and course.end_date:
собственно если нет этих значений(или оно null, то бишь None)- оно не сохраняется.
На что там админка ориентируется в этом плане точно не скажу, но похоже сигнал post_save не вызывается.
Офлайн
Не-не, что не сохраняется это нормально. Но оно вообще вылетает с ошибкой.
Можно в переопределённом методе что угодно написать, даже не трогать эти if course.start_date and course.end_date: - всё равно будет ругаться.
Факт, что если есть переопределение save, то вылазит эта ошибка.
Офлайн
Ну у Вас
super(Course_event, self).save(*args, **kwargs)
вызывается только если даты есть.
а дальше в переопределении вызывается это?
В конце метода save по-любому надо super(Course_event, self).save(*args, **kwargs)
class Course_event(models.Model): title = models.ForeignKey(Course) date_time = models.DateTimeField(blank=True, null=True) def save(self, *args, **kwargs): course = self.title if course.start_date and course.end_date: #some code course.save() super(Course_event, self).save(*args, **kwargs)
Отредактировано nnmware (Май 22, 2013 15:26:54)
Офлайн
super(Course_event, self).save(*args, **kwargs) должен быть в любом случае запущен в конце? Т.е. нельзя так как у меня в примере, что он запускается, если выполнено условие?
А как тогда нужно правильно сохранять запись? Если мне нужно, чтобы поля start_date и end_date были null.
P.S. если переопределяю метод save(), но делаю его просто пустым, ничего там не пишу - та же ошибка. Запутался уже куда копать)
Отредактировано terrrible (Май 22, 2013 15:34:40)
Офлайн
Вот так пашет?
Офлайн
Ничего страшного.
Просто в конце метода save по любому надобно вызвать метод save родительского класса.
Офлайн
по-моему
course.save()
Офлайн
ilnur
по-моему course.save()
тут лишнее.вы перекрываете стандартный save химимчите с полями. А потом вызываете родительский save. Который все и сохранит
Офлайн
да точно. не заметил что модели разные
Офлайн