2
我有一个DeleteView。我想在其中访问相关的对象ID。当用户发出POST请求时。如何访问DeleteView中的相关对象ID
查看:
class DeletePacketView(LoginRequiredMixin, DeleteView):
model = Packet
template_name = DELETE_PACKET_TEMPLATE
def get_success_url(self):
# Return to customer home
return reverse('myapp:view_customer',
kwargs={'pk': self.object.customer.id
}
)
def post(self, request, *args, **kwargs):
html = """
<html>
<head>
<script>window.onunload = refreshParent; function refreshParent() {
window.opener.location.href=%s;
}
</script>
</head>
<body>
<h1>object deleted successfully</h1>
<button type="button" onclick="window.close()">OK</button>
</body>
</html>
""" % reverse('myapp:view_customer',
kwargs={'pk': self.object.customer.id
}
)
super(DeletePacketView, self).post(request, *args, **kwargs)
return HttpResponse(html)
但我得到的错误,当我尝试提交表单。
回溯:
Environment:
Request Method: POST
Request URL: http://localhost:8000/delete/packet/96/
Django Version: 1.7
Python Version: 2.7.8
Installed Applications:
('django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'myapp')
Installed Middleware:
('django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
'django.contrib.admindocs.middleware.XViewMiddleware')
Traceback:
File "C:\Users\PrImE\envs\ge\lib\site-packages\django\core\handlers\base.py" in get_response
111. response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "C:\Users\PrImE\envs\ge\lib\site-packages\django\views\generic\base.py" in view
69. return self.dispatch(request, *args, **kwargs)
File "C:\Users\PrImE\envs\ge\lib\site-packages\django\utils\decorators.py" in _wrapper
29. return bound_func(*args, **kwargs)
File "C:\Users\PrImE\envs\ge\lib\site-packages\django\contrib\auth\decorators.py" in _wrapped_view
22. return view_func(request, *args, **kwargs)
File "C:\Users\PrImE\envs\ge\lib\site-packages\django\utils\decorators.py" in bound_func
23. return super(LoginRequiredMixin, self).dispatch(*args, **kwargs)
File "C:\Users\PrImE\envs\ge\lib\site-packages\django\views\generic\base.py" in dispatch
87. return handler(request, *args, **kwargs)
File "C:\Users\PrImE\workspace\myproject\repo\dev\myproject\myproject\myapp\views\delete_views\delete_packet_view.py" in post
66. kwargs={'pk': self.object.customer.id
Exception Type: AttributeError at /delete/packet/96/
Exception Value: 'DeletePacketView' object has no attribute 'object'
,因为被删除的对象,我得到这个错误。但get_success_url
方法工作正常它将用户重定向到客户页面为什么不能发布方法正在工作以及如何访问self.object.customer.id
???
是啊,我只是试图'self.get_object()customer.id'它的工作。谢谢.. – 2014-11-24 19:57:43