извинения за вводящее в заблуждение название;скажем, у меня есть такая ссылка:
<div class="col-md-3">
<a class="btn btn-success" href="{% url 'rental-create' car.pk %}">Order this car!</a>
</div>
, которая ведет к представлению, которое я использую для обработки заказа своих автомобилей
class RentalCreateView(LoginRequiredMixin, SuccessMessageMixin, CreateView):
form_class = RentalCreateForm
template_name = 'rentals/rental_create.html'
success_message = 'Created'
context_object_name = 'order'
def get_success_url(self):
return reverse('rental-detail', kwargs={'pk': self.object.pk})
def form_valid(self, form):
form.instance.profile = self.request.user.profile
car = Car.objects.get(pk=self.kwargs['pk'])
form.instance.car = car
return super().form_valid(form)
, теперь я хотел бы просто использовать свой объект (автомобиль) рк в шаблоне или непосредственно в форме, которую я определил выше.
Как видите, мне удалось получить доступ к этой переменной в моем методе form_valid:
car = Car.objects.get(pk=self.kwargs['pk'])
однако этот механизм гарантирует, что после сохранения экземпляра в базе данных car будет таким же, как в запрашиваемом URL.
Моя точка зрения заключается в использовании объекта car (который соответствует URL-адресу, например / rental / new / 1 / )в шаблоне или в виде поля, недоступного для редактирования.
вкратце - я бы хотел показать пользователю текущий автомобиль, который он заказывает.
вот мой файл forms.py
class RentalCreateForm(ModelForm):
class Meta:
model = Rental
fields = ('start_date', 'end_date', 'additional_info',)
exclude = ('profile', 'paid')
widgets = {
'start_date': DateInput(),
'end_date': DateInput()
}
Предоставляет ли Django простой способ добиться этого?Любая помощь будет высоко оценен.