我正在用ModelForms在Django中编写一个预订系统,我想在表单保存时更改ForeginKey模型中布尔字段的值.
Models.py
class AvailableHours(models.Model):
free_date = models.ForeignKey(AvailableDates, null=True, blank=True,on_delete=models.CASCADE)
free_hours_from = models.CharField(max_length=10,null=True, blank=True)
free_hours_to = models.CharField(max_length=10,null=True, blank=True)
status = models.BooleanField(null=True,default=True)
class Bookings(models.Model):
...
booked_time = models.ForeignKey(AvailableHours, on_delete=models.CASCADE,related_name='booked_time')
Views.py
@login_required()
def booking_form(request):
form = forms.BookingForm()
if request.method == 'POST':
form = forms.BookingForm(request.POST)
if form.is_valid():
book = form.save(commit=False)
book.user = request.user
form.save()
return HttpResponseRedirect(reverse('creator:login'))
return render(request, 'account/book.html', {'form': form})
Forms.py
class BookingForm(forms.ModelForm):
class Meta:
model = Bookings
exclude = ('user','booking_code','confirmed',)
由于我希望每个可用小时只能预订一次,我需要表单将可用小时状态的值更改为假,以便我可以在模板中过滤它.
有谁能提出一个解决这个问题的方法吗?
我试过像这样的东西
form.booked_time.status = False
在我看来,但这并不管用