我有一个名为 Entry 的模型,它具有以下字段
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)
当我创建一个新条目时,如果创建者已经在相同的开始日期和结束日期之间创建了一个事件,我不想被创建。所以我的想法是当用户从创建表单中发布数据时
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
我在想也许一个独特的字段并正确检查数据库完整性会更好,但它是取消的字段让我困扰如何选择独特的字段。你认为我的方法会有问题吗?我的意思是它是否确保不会在用户的开始日期和结束日期之间设置任何条目,他是否已经保存了一个?您认为此代码是否更好地进行预保存?数据库将开始为空,因此在输入一个条目后,一切都会顺其自然(假设......不太确定......)