【发布时间】:2018-06-18 20:54:51
【问题描述】:
我有一个DemandDetailView(DetailView) 和BidCreationView(CreateView)。
在DemandDetailView 页面上,有一个表单(用于创建投标)将数据发布到BidCreationView。
如果form 无效,我不知道该怎么办。我想用form errors 再次呈现DemandDetailView 并保留相应的URL。
class DemandDetailView(DetailView):
model = Demand
template_name = 'demands/detail.html'
def dispatch(self, request, *args, **kwargs):
self.bid_creation_form = BidCreationForm(request.POST or None, request.FILES or None,request=request)
return super().dispatch(request, *args, **kwargs)
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
context['bid_creation_form']=self.bid_creation_form
return context
class BidCreationView(CreateView):
http_method_names = ['post']
model = Bid
form_class = BidCreationForm
def get_success_url(self):
return reverse_lazy("demands:demands")
def get_form_kwargs(self):
kwargs = super().get_form_kwargs()
kwargs.update({'request': self.request})
return kwargs
def form_valid(self, form):
form.instance.demand_id = self.kwargs.pop('demand_id')
return super().form_valid(form)
你有什么想法吗?我唯一的想法是使用会话,这可能不是最好的方法。
【问题讨论】:
标签: python django django-forms django-views django-urls