У меня есть специальная проверка на одной из моих моделей, и я генерирую ошибки, на основании которых не удалось выполнить проверку. Я хочу передать эти ошибки на мой взгляд.Пытается пройти сеанс из модели Сохранить в виде
class TimeSheet(models.Model):
O = "Open"
S = "Submitted"
A = "Approved"
R = "Needs review"
STATUS_CHOICES = (
(O, "Open"),
(S, "Submitted"),
(A, "Approved"),
(R, "Needs Reviewing"),
)
start_date = models.DateField()
end_date = models.DateField()
person_id = models.ForeignKey(Person)
status = models.CharField(max_length= 50, default="Open", choices=STATUS_CHOICES)
submitted_id = models.IntegerField(default=0)
approved_id = models.IntegerField(default=0)
submitted_date = models.DateTimeField(auto_now_add=True, blank=True)
approved_date = models.DateTimeField(auto_now_add=True, blank=True)
def get_absolute_url(self):
return reverse('tande:timesheet', kwargs={'id': self.id})
def save(self, *args, **kwargs):
ok_to_continue = True
start_date = self.start_date
end_date = self.end_date
if end_date < start_date:
error = "ERROR: Start date must be before end date"
ok_to_continue = False
# make sure both dates are in the same month
if start_date.month != end_date.month:
error = "ERROR: Start and end dates must be in the same month"
ok_to_continue = False
# VALIDATION
if ok_to_continue:
super(TimeSheet, self).save(*args, **kwargs)
else:
print error
self.request.session['error_from_save'] = error
Однако, это вызывает ошибку:
AttributeError: 'TimeSheet' object has no attribute 'request'
Почему self.request.session
не работает? Есть ли другой способ передать это мне на мой взгляд?
Ах, хорошо, что имеет смысл. Я попробую. В чем проблема с отменой сохранения модели? Просто потому, что я сохраняю его как объект на данный момент, потому что я не мог получить формы для работы с ajax (проблемы проверки) и вернуть данные в представление. –
Проверка должна выполняться до 'save'. С вашей пользовательской проверкой 'ok_to_continue = True' вы эффективно переустанавливаете процесс Django, который уже реализован с помощью' clean', 'clean_ *' и валидаторов. Они также могут работать в обстоятельствах, когда 'save' не вызывается. – Risadinha