我需要修改django管理员中变更列表使用的最终查询集。
我相信(如果我错了,请纠正我)我可以通过重写changelist_view()来实现,但是尝试更改查询集无效,只是在管理员中加载了原始查询集。
def changelist_view(self, request, extra_context=None):
response = super().changelist_view(
request,
extra_context=extra_context,
)
try:
qs = response.context_data['cl'].queryset
except (AttributeError, KeyError):
return response
response.context_data['cl'].queryset = qs.filter(pk__in=qs.order_by().values('pk').distinct('target'))
return response
我认为,更改变更列表的上下文数据可以实现此目的,但这没有用。
如何执行此操作,请注意,在应用所有其他过滤器后,我需要修改最终查询集。