重定向至Django Admin中的过滤列表



假设,我有一个模型a和模型B,它与模型a 具有ForeignKey关系

在Django Admin的任何modelA对象页面上,我希望有一个链接,指向与该modelA实例有关系的modelB实例的过滤列表。

例如:

/admin/my_app/modelA/1/change/,我想访问/admin/my_app/modelB/?modelA__id__exact=1

创建管理更改视图的完整URL,包括过滤器:

  1. 反转URL

根据中的列表https://docs.djangoproject.com/en/4.2/ref/contrib/admin/#reversing-管理员URL您可以根据模型和应用程序标签动态创建URL。

这是模式:{{ app_label }}_{{ model_name }}_changelist

在您的情况下:

# in models.py
class MyModel(Model):
# you're model fields
# in admin.py in some Admin class
model_cls = MyModel
change_url = reverse(f'admin:{model_cls._meta.app_label}_{model_cls._meta.model_name}_changelist')
  1. 添加过滤器参数

与所有常规reverse()调用一样,将参数添加到kwargs关键字参数列表中。

在变更列表中,搜索参数为q

在管理员中定义搜索字段.py:

search_fields = ['modelA__id__exact']

然后得到这样的网址:

change_url = reverse('admin:myapp_modelb_change', kwargs={'q': 1})

相关内容

  • 没有找到相关文章

最新更新