Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/visual-studio-2010/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django-需要TemplateView的帮助:Queryset和not Update_Django_Django Views - Fatal编程技术网

Django-需要TemplateView的帮助:Queryset和not Update

Django-需要TemplateView的帮助:Queryset和not Update,django,django-views,Django,Django Views,我正在构建一个包含两个表单的TemplateView,一个允许用户选择客户(CustomPerform),另一个允许用户为客户添加订单(OrderForm) 代码: 首先,我似乎无法将任何现有数据加载到表单中。假设UserProfile->ShippingDetails(fk:UserProfile)->Orders(fk:ShippingDetails)之间存在onetoone关系,我如何在加载时将适当的变量查询到表单中 另外,如何保存数据?它在保存时抛出一个错误,我无法检索有用的调试信息 我

我正在构建一个包含两个表单的TemplateView,一个允许用户选择客户(CustomPerform),另一个允许用户为客户添加订单(OrderForm)

代码:

首先,我似乎无法将任何现有数据加载到表单中。假设UserProfile->ShippingDetails(fk:UserProfile)->Orders(fk:ShippingDetails)之间存在onetoone关系,我如何在加载时将适当的变量查询到表单中

另外,如何保存数据?它在保存时抛出一个错误,我无法检索有用的调试信息


我在templateview中使用多个表单的方法正确吗?

任何时候都不能将POST数据传递到表单中。您需要在实例化它们时执行此操作。我会将实例化从
get\u context\u data
中移出,并在
get
post
中执行:第一次是现在的实例化,第二次是通过
请求。post


还请注意,您可能希望在保存两个表单之前检查它们是否有效,而不是依次检查和保存每个表单。按照现在的方式,如果第一个有效,它甚至不会检查第二个,更不用说保存它了,因此如果第一个有效,但第二个无效,则模板上不会出现任何错误。

您在任何时候都不会将POST数据传递到表单中。您需要在实例化它们时执行此操作。我会将实例化从
get\u context\u data
中移出,并在
get
post
中执行:第一次是现在的实例化,第二次是通过
请求。post


还请注意,您可能希望在保存两个表单之前检查它们是否有效,而不是依次检查和保存每个表单。按照现在的方式,如果第一个有效,它甚至不会检查第二个,更不用说保存它了,因此如果第一个有效,但第二个无效,则模板上不会出现任何错误。

谢谢您的帮助,我想我现在明白了它的工作原理。我可能只允许保存一个表单,而不是同时提交两个表单,这将重新考虑其中的逻辑。需要一段时间才能习惯django的运行方式,这与我习惯的(桌面应用程序)非常不同。谢谢你的帮助,我想我现在明白它是如何工作的了。我可能只允许保存一个表单,而不是同时提交两个表单,这将重新考虑其中的逻辑。需要一段时间才能习惯django的运行方式,这与我习惯的(桌面应用程序)非常不同。
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)