在 Django 管理模型中传输 QuerySet
Transfer the QuerySet in Django AdminModel
我正在尝试通过我的排序来引用另一个模型。
query = Cars.objects.filter(task_id__exact=obj.task_id,
engine__isnull=False).values_list('engine', flat=True)
engines_ids_list=list(query)
link = reverse("admin:auto_engines_changelist") + f"?id={engines_ids_list}"
^
Not work, it's example
?engine_id=1&engine_id=2
使用最后一个参数 (engine_id=2) 显示对象,而不是 2 个对象..
仅工作Engines.objects.filter(pk__in=engines_ids_list)
如何将此过滤器发送到引擎更改列表页面?
您可以将 task_id 作为参数传递给 url。
link = reverse("admin:auto_engines_changelist") + f"?task_id={task_id}"
然后您可以在 Engines Modeladmin 的 get_queryset() 方法中访问 {task_id} 值。
def get_queryset(self, request):
queryset = super().get_queryset(request)
task_id = request.GET.get('task_id')
if task_id is not None:
engine_ids = Cars.objects.filter(task_id__exact=task_id, engine__isnull=False).values_list('engine', flat=True)
queryset = queryset.filter(id__in=engine_ids)
return queryset
我正在尝试通过我的排序来引用另一个模型。
query = Cars.objects.filter(task_id__exact=obj.task_id,
engine__isnull=False).values_list('engine', flat=True)
engines_ids_list=list(query)
link = reverse("admin:auto_engines_changelist") + f"?id={engines_ids_list}"
^
Not work, it's example
?engine_id=1&engine_id=2
使用最后一个参数 (engine_id=2) 显示对象,而不是 2 个对象..
仅工作Engines.objects.filter(pk__in=engines_ids_list)
如何将此过滤器发送到引擎更改列表页面?
您可以将 task_id 作为参数传递给 url。
link = reverse("admin:auto_engines_changelist") + f"?task_id={task_id}"
然后您可以在 Engines Modeladmin 的 get_queryset() 方法中访问 {task_id} 值。
def get_queryset(self, request):
queryset = super().get_queryset(request)
task_id = request.GET.get('task_id')
if task_id is not None:
engine_ids = Cars.objects.filter(task_id__exact=task_id, engine__isnull=False).values_list('engine', flat=True)
queryset = queryset.filter(id__in=engine_ids)
return queryset