У меня есть форма заполнения, где есть Select, в котором выводится поле, унаследованное с другой модели. Объекты должны иметь свою актуальность, то есть если дата "меньше" сегодняшней, то объект не должен выводиться в теге select на сайте. Он у меня выводит все.
Вопрос в том как сделать так, чтобы он выводил только актуальные ивенты, то есть как создать условие?
Главная модель
import datetime
from django.db import models
from TimeTable.models import TimeTable
class Application(models.Model):
name = models.CharField(max_length = 100, verbose_name = 'Имя', null = True)
surname = models.CharField(max_length = 100, verbose_name = 'Фамилия', null = True)
middlename = models.CharField(max_length = 100, verbose_name = 'Отчество', null = True)
number = models.CharField(max_length = 20, null = True)
event = models.ForeignKey(TimeTable, on_delete = models.PROTECT, verbose_name = 'Мероприятие')
comment = models.TextField(verbose_name = 'Комментарий', null = True, blank = True)
date = models.DateField(verbose_name = 'Дата', default = datetime.date.today)
def __str__(self):
return str(self.name) + ' ' + str(self.middlename)
class Meta:
verbose_name_plural = 'Заявки'
verbose_name = 'Заявка'
ordering = ['-date']
Модель, которая связана с этой моделью
from django.db import models
class TimeTable(models.Model):
start = models.CharField(max_length = 100, verbose_name = 'Старт')
finish = models.CharField(max_length = 120, verbose_name = 'Финиш')
date = models.DateField(verbose_name = 'Дата')
time = models.TimeField(verbose_name = 'Время')
meeting_place = models.CharField(max_length = 120, verbose_name = 'Место сбора')
def __str__(self):
return str(self.start) + ' / ' + str(self.finish)
class Meta:
verbose_name_plural = 'Таблицы'
verbose_name = 'Таблица'
ordering = ['-date']
views.py
from django.shortcuts import render, HttpResponse, redirect
from .forms import ApplicationForm
def index(request):
error = ''
if request.method == 'POST':
form = ApplicationForm(request.POST)
if form.is_valid():
form.save()
return redirect('/')
else:
error = 'ERROR'
form = ApplicationForm()
context = {
'form' : form,
'error' : error
}
return render(request, 'Application/Application.html', context)
forms.py
from django.forms import ModelForm, TextInput, Textarea, Select
from .models import Application
class ApplicationForm(ModelForm):
class Meta:
model = Application
fields = ['name', 'surname', 'middlename', 'number', 'event', 'comment']
widgets ={
'name' : TextInput(attrs = {
'class' : 'form-application',
'placeholder' : 'Имя'
}),
'surname' : TextInput(attrs = {
'class' : 'form-application',
'placeholder' : 'Фамилия'
}),
'middlename' : TextInput(attrs = {
'class' : 'form-application',
'placeholder' : 'Отчество'
}),
'number' : TextInput(attrs = {
'class' : 'form-application',
'placeholder' : 'Номер'
}),
'event' : Select(attrs = {
'class' : 'form-application',
'selected' : 'Выберите мероприятие'
}),
'comment' : Textarea(attrs = {
'class' : 'form-application',
'placeholder' : 'Комментарий (необязательно)'
}),
}