Введение: я создаю приложение для событий, я хочу, чтобы пользователь выбирал дату от 3 дней с сегодняшнего дня до максимум 30 дней с сегодняшнего дня
class CreateEvent(IsVerifiedMixin, CreateView):
model = Event
form_class = EventForm
template_name = 'event/event_form.html'
def form_valid(self, form, *args, **kwargs):
self.object = form.save(commit=False)
event = self.object
today = datetime.date.today()
user = self.request.user
if today + datetime.timedelta(days=3) <= event.date <= today + datetime.timedelta(days=30):
event.user = self.request.user
event.initial_stock = event.stock
slug = self.kwargs['slug']
event.save()
else: #I know the below line of code is wrong. How do I fix this
messages.error(self.request, "The event date has to be equal or more than 3 days away and less than 30 days")
return super().form_valid(form)
Вышеприведенное дает мне IntegrityError
, если дата выключена, если дата правильная, объект создан. Я просто хочу получить ошибку формы и не переходить на следующую страницу
Ниже приведен form.py для этого
class EventForm(forms.ModelForm):
price = forms.DecimalField(decimal_places=2, max_digits=5)
stock = forms.IntegerField()
class Meta:
model = Event
fields = ('price', 'stock', 'date', 'time_from', 'time_to', 'lat', 'lon')