有这个urls.py片段:
url(r'^storageitem/(?P<pk>[\w]+)/addtransaction/$', login_required(
StorageItemTransactionAddView.as_view()),
name='storage_item_transaction'),
我想知道在模板中使pk可用的对象背后的正确方法是什么,以显示它,例如与
<h1>{{ object.name }}</h1>
我尝试配置查询集
...
queryset = StorageItem.objects.get
pk=get_from_kwargs()['object'])
def get_form_kwargs(self):
kwargs = super(ItemCreate, self).get_form_kwargs()
kwargs.update({
'object' : self.kwargs['pk']
})
return kwargs
但此方法无法访问此方法。所以我想知道怎么能以正确的方式做到这一点?我需要的只是
self.object = StorageItem.objects.get(pk='my pk')
答案 0 :(得分:2)
您可以覆盖get_context_data以传递额外的上下文:
...
def get_context_data(self, **kwargs):
context = super(ItemCreate, self).get_context_data(**kwargs)
context['storage_item'] = StorageItem.objects.get(pk=self.kwargs['pk'])
return context
答案 1 :(得分:0)
为什么不简单地执行以下操作:
class StorageItemTransactionAddView(View):
def post(self, request, pk):
storage_item = StorageItem.objects.get(pk=pk)
...
return render(request, 'myapp/index.html', {'object': storage_item})
现在,在您的模板中,您可以执行以下操作:
<h1>{{ object.name }}</h1>
希望有所帮助