django - Django:在 init() 中获取 DetailView 的模型
问题描述
您好,我正在尝试在它自己的init () 方法中访问详细视图模型。到目前为止,我有以下代码:
视图.py
class AccountDetailView(DetailView):
model = Account
template_name = 'account_detail.html'
def __init__(self, **kwargs):
super(AccountDetailView, self).__init__(**kwargs)
timeline = kwargs.get('timeline')
history = History.objects.filter(timeline=timeline).first()
payHistory = history.topay_set.filter(payed=True, internal_source=self.object).order_by('-payDate')
paginator = Paginator(payHistory, 10)
问题是 payHistory 中的“self.object”。如何从 DetailView 访问帐户?
我收到以下错误:
Traceback (most recent call last):
File "C:\Users\Janik\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\core\handlers\exception.py", line 34, in inner
response = get_response(request)
File "C:\Users\Janik\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\core\handlers\base.py", line 115, in _get_response
response = self.process_exception_by_middleware(e, request)
File "C:\Users\Janik\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\core\handlers\base.py", line 113, in _get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "C:\Users\Janik\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\views\generic\base.py", line 62, in view
self = cls(**initkwargs)
File "C:\Users\Janik\Documents\GitHub\jConomy\jConomy\apps\Account\views.py", line 45, in __init__
payHistory = history.topay_set.filter(payed=True, internal_source=self.object).order_by('-payDate')
AttributeError: 'AccountDetailView' object has no attribute 'object'
解决方案
那是因为self.object
设置在get
方法上,而不是__init__
方法上。
我想你可以self.get_object()
改用。
编辑
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
timeline = kwargs.get('timeline')
history = History.objects.filter(timeline=timeline).first()
payHistory = history.topay_set.filter(payed=True, internal_source=self.object).order_by('-payDate')
paginator = Paginator(payHistory, 10)
context['paginator'] = paginator
return context
推荐阅读
- c# - C#中的类似子字符串
- java - 如何为视图创建自定义阴影?
- python - 使用 Python 从 HTML 表单向 SQL Server 插入数据?
- php - Symfony 5 DATABASE_URL 与 Docker 容器
- docker - Docker - 负载平衡 - 分配端口
- qt - 如何仅使用 Qt StyleSheet 使按钮周围的可见圆圈聚焦
- r - 强制 R 始终在错误消息中显示包名称
- python - 在 Windows 上使用 python 自动化 azure azcopy
- javascript - ReactJS hooks 重新渲染功能组件
- javascript - Barba.js 转换多个页面