Я пытался сделать систему бронирования лодок.
# models.py
class Boat(models.Model):
name = models.CharField (max_length=10, unique=True, blank=False)
type = models.CharField (max_length=10, blank=False)
class Booking(models.Model):
date_from = models.DateField(auto_now=False, auto_now_add=False)
date_to = models.DateField(auto_now=False, auto_now_add=False)
rent = models.DecimalField(max_digits=7, decimal_places=2)
boat = models.ForeignKey(Boat, on_delete=models.CASCADE)
person = models.ForeignKey(Person, on_delete=models.CASCADE)
Новая лодка зарегистрирована через эту форму:
class newBoatform(forms.Form):
name = forms.CharField(label='Name of the boat: ', max_length=15)
type = forms.CharField(label='Type of the boat: ', max_length=15)
class Meta:
model = Boat
fields = ('name','type',)
Лодка бронируется через эту форму:
class bookform(forms.Form):
boat =forms.CharField(label='Select boat',max_length=15)
date_from=forms.DateField(label='Date from', initial=date.today)
date_to=forms.DateField(label='Date to')
rent = forms.DecimalField(label='Pay $ ')
class Meta:
model = Booking
fields = ('date_from','date_to','rent','boat','person',)
Чтобы забронировать лодку через книжную форму , я вставляю название существующей лодки и другую информацию о поле. Тогда я получаю ошибку:
Невозможно назначить "Эмму": "Booking.boat" должен быть экземпляром "Boat".
Функция просмотра книжной формы :
def bookBoat(request):
if request.method == 'POST':
form = bookform(request.POST)
if form.is_valid():
obj = Booking()
obj.boat = form.cleaned_data['boat']
obj.date_from = form.cleaned_data['date_from']
obj.date_to = form.cleaned_data['date_to']
obj.rent = form.cleaned_data['rent']
obj.save()
return HttpResponseRedirect('/thanks/')
else:
form = bookform()
return render(request, 'booking.html', {'form': form})
Я не могу понять, что не так. Другие ответы на эту же ошибку возникают у меня над головой.