擅长:python、mysql、java
<p>这是未经测试的代码,但我认为这个逻辑应该测试是否有其他保留与表单中提交的保留重叠。这可能应该放在表单的<code>clean</code>方法中,或者其他一些验证中。甚至在<code>Reservation</code>模型的<code>save</code>方法上:</p>
<pre><code>from django.db.models import Q
new_start_date = datetime.datetime(2013, 11, 16, 10, 00)
new_end_date = datetime.datetime(2013, 11, 16, 11, 00)
material = Materiel.objects.get(nom='Whatever')
clashing_reservations = Reservation.objects.filter(objet=material).filter(
Q(date_debut__lte=new_start_date, date_fin__gte=new_start_date) |
Q(date_debut__lt=new_end_date, date_fin_gte=new_end_date)
)
if clashing_reservations.exists():
raise ValidationError('Those dates clash with another reservation.')
</code></pre>