У меня есть модель под названием запись, которая имеет следующие полямодели в Джанго
from django.contrib.auth.models import User
class Entry(models.Model):
start = models.DateTimeField()
end = models.DateTimeField()
creator = models.ForeignKey(User)
canceled = models.BooleanField(default=False)
Когда я создаю новую запись, я не хочу быть создан, если создатель имеет Allready созданного события между одинаковые даты начала и окончания. Так что моя идея была, когда сообщения пользовательских данные из формы создания
if request.method == 'POST':
entryform = EntryAddForm(request.POST)
if entryform.is_valid():
entry = entryform.save(commit=False)
entry.creator = request.user
#check if an entry exists between start and end
if Entry.objects.get(creator=entry.creator, start__gte=entry.start, end__lte=entry.end, canceled=False):
#Add to message framework that an entry allready exists there
return redirect_to('create_form_page')
else:
#go on with creating the entry
Я думал, что, может быть, единственное поле и проверка правильно дб целостностью будет лучше, но это отмененное поле, которая беспокоит меня в том, как выбрать уникальные поля. Вы думаете, что с моим методом будет что-то неправильно? Я имею в виду, не делает ли он, что никакая запись не будет установлена между датой начала и окончания для пользователя, он уже сохранил ее? Считаете ли вы, что этот код лучше подходит для предварительного сохранения? ДБ начнет пуст, поэтому после ввода одной записи все будет проходить (при условии, что ... не совсем уверен ...)
Возможно, так? 'Entry.objects.filter (creator = entry.creator, start__gte = entry.start, end__lte = end, cancel = True) .exists()' – crazyzubr
В правиле if правильно? – Apostolos
Несомненно. вместо 'Entry.objects.get ...' Чтобы исключить исключение 'Entry.DoesNotExist' – crazyzubr