如何在基于 class 的 FormView 中使用的模板中显示当前对象
How to show current object inside template used with class based FormView
有这个 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')
您可以覆盖 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
为什么不简单地执行以下操作:
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>
希望对您有所帮助
有这个 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')
您可以覆盖 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
为什么不简单地执行以下操作:
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>
希望对您有所帮助