0

ユーザーが顧客 (CustomerForm) を選択できるようにするフォームと、顧客の注文 (OrderForm) を追加するフォームの 2 つのフォームを使用して TemplateView を作成しています。

コード:

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)

まず、既存のデータをフォームにロードできないようです。UserProfile->ShippingDetails (fk: UserProfile)-> Orders (fk:ShippingDetails) の間に一対一の関係があると仮定すると、ロード時に適切な変数をフォームにクエリするにはどうすればよいですか?

また、データの保存方法を教えてください。保存時にエラーが発生し、有用なデバッグ情報を取得できませんでした。

テンプレートビューに複数のフォームを持つための私のアプローチは正しいですか?

4

1 に答える 1