Избегайте перенаправления на модели
Я довольно новичок в django и создаю простой веб с двумя выборками даты, которые затем используются в качестве переменной для пинга БД и заполнения поля charfield результатом запроса. Пока что мне удалось красиво отобразить страницу, и когда пользователь отправляет запрос, запрос срабатывает красиво и значение извлекается. Проблема заключается в том, что после этого модель ожидает url для перенаправления, но вместо этого я хочу остаться на той же странице и заполнить результат запроса в поле charfield. Пока вот что я получил (я стер конфиденциальные данные):
from django.db import models
from django.forms import ValidationError
import psycopg2
from django.utils import timezone
class Event(models.Model):
location = models.CharField(max_length=30, choices=[("us","US"), ("global","Global")])
start = models.DateTimeField(default=timezone.now)
end = models.DateTimeField(default=timezone.now)
# This is the field I want to fill with the output of the query.
result = models.CharField(max_length=20, default=0)
# def get_absolute_url(self):
# I have tried just comenting this but it throws and exception
# return bytes(str(self.pk), encoding='utf-8')
def _do_insert(self, manager, using, fields, returning_fields, raw):
query = """
"""
location_value = getattr(self, fields[0].name)
start_date = getattr(self, fields[1].name)
end_date = getattr(self, fields[2].name)
if start_date >= end_date:
# How can I make this exception to be displayed as red under the dates?
raise ValidationError("Start can't be later than end")
start_date = start_date.strftime('%Y-%m-%d')
end_date = end_date.strftime('%Y-%m-%d')
res = self.fetch_data(query.format(start_date, end_date))
# This is what I want to be displayed on the result box.
return res[0]
@staticmethod
def fetch_data(query):
# establishing the connection
conn = psycopg2.connect(-----)
cursor = conn.cursor()
cursor.execute(query)
result = cursor.fetchone();
conn.close()
return result
Есть подсказки, как этого достичь?
EDIT: Я добавляю view.py
class XDSoftDateTimePickerView(CreateView):
model = Event
form_class = XDSoftEventForm
template_name = 'core/xdsoft_event_form.html'
class HomeView(TemplateView):
template_name = 'core/home.html'
class EventDetailView(DetailView):
model = Event