Я создаю TemplateView с 2 формами, один из которых позволяет пользователю выбрать клиента (CustomerForm) и другой, чтобы добавить заказ (OrderForm) для клиента.Django - Нужна помощь для TemplateView: Queryset и не обновляется
Код:
class DisplayOrdersView(TemplateView):
template_name = 'orders/orders_details_form.html'
def get_context_data(self, **kwargs):
context = kwargs
context['shippingdetailsform'] = ShippingDetailsForm(prefix='shippingdetailsform')
context['ordersform'] = OrdersForm(prefix='ordersform')
return context
def dispatch(self, request, *args, **kwargs):
return super(DisplayOrdersView, self).dispatch(request, *args, **kwargs)
def get(self, request, *args, **kwargs):
context = self.get_context_data(**kwargs)
return self.render_to_response(context)
def post(self, request, *args, **kwargs):
context = self.get_context_data(**kwargs)
profile=request.user.get_profile()
if context['shippingdetailsform'].is_valid():
instance = context['shippingdetailsform'].save(commit=False)
instance.profile = profile
instance.save()
messages.success(request, 'orders for {0} saved'.format(profile))
elif context['ordersform'].is_valid():
instance = ordersform.save(commit=False)
shippingdetails, created = shippingdetails.objects.get_or_create(profile=profile)
shippingdetails.save()
instance.user = customer
instance.save()
messages.success(request, 'orders details for {0} saved.'.format(profile))
else:
messages.error(request, 'Error(s) saving form')
return self.render_to_response(context)
Во-первых, я не могу показаться, чтобы загрузить все существующие данные в формы. Предполагая взаимосвязь onetoone между UserProfile-> ShippingDetails (fk: UserProfile) -> Orders (fk: ShippingDetails), как я могу запросить соответствующие переменные в форме при загрузке?
Также, как я могу сохранить данные? Он выдает ошибку при сохранении, и я не смог получить полезную информацию об отладке.
Является ли мой подход правильным при наличии нескольких форм в шаблоне?
Спасибо за помощь, подумайте, что я понимаю, как это работает сейчас. Я могу разрешить сохранение только одной формы вместо отправки одновременно, переосмыслить логику. Потребуется некоторое время, чтобы привыкнуть к тому, как работает django, сильно отличается от того, к чему я привык (настольные приложения). – mrkre