我有一个FormView生成一个对象的审查(它通常与之相关),然后将它链接到对象并在表单完成时保存它。Persist Django FormView数据
我遇到的问题是我没有办法保持我想连接的对象的数据。这意味着我需要为上下文(模板呈现)进行“查找”,以进行有效处理(进行链接)和成功(生成适当的反向url)。
有没有更好的绑定方法审查的对象?或更好的是,有没有办法坚持形式的数据,我失踪了?
编辑:对不起,登录装饰派遣。我删除该方法,因为太抱怨太多的代码我不认为这是相关的...我一定错过了decoratot
class ReviewCreate(FormView):
template_name = 'food/item_add_review.html'
form_class = ReviewForm
review_item = None
def get_context_data(self, **kwargs):
context = super(ReviewCreate, self).get_context_data(**kwargs)
item_modelname = self.kwargs.get('model')
item_model = apps.get_model('food',item_modelname)
review_item = get_object_or_404(item_model,pk=self.kwargs.get('pk'))
context['item'] = review_item
return context
def form_valid(self, form):
item_modelname = self.kwargs.get('model')
item_model = apps.get_model('food',item_modelname)
review_item = get_object_or_404(item_model,pk=self.kwargs.get('pk'))
r = form.save(commit=False)
r.content_object=review_item
r.save()
return super(ReviewCreate, self).form_valid(form)
def get_success_url(self):
item_modelname = self.kwargs.get('model')
item_model = apps.get_model('food',item_modelname)
review_item = get_object_or_404(item_model,pk=self.kwargs.get('pk'))
return reverse('pkitem', kwargs = {'pk': review_item.id, 'model':item_modelname},)
我曾尝试改变自我。*在get_context_data位变量没有坚持......虽然这是更优雅是存在的,没有工作,明显的原因? – Ewanw
如果self.review_item没有设置,get_context_data会引发AttributeError。我会仔细检查模板。 –