重定向到Django管理中的过滤列表

wfsdck30  于 2023-08-08  发布在  Go
关注(0)|答案(1)|浏览(100)

假设我有一个模型A和一个模型B,它们与模型A有ForeignKey关系
在Django Admin中的任何modelA对象页面上,我希望有一个链接,指向与该modelA示例有关系的modelB示例的过滤列表。
举例来说:
/admin/my_app/modelA/1/change/,我想访问/admin/my_app/modelB/?modelA__id__exact=1

yhived7q

yhived7q1#

要创建包含筛选器的管理员更改视图的完整URL,请执行以下操作:
1.反转URL
根据https://docs.djangoproject.com/en/4.2/ref/contrib/admin/#reversing-admin-urls中的列表,您可以从模型和应用程序标签动态创建URL。
这就是模式:第一个月
在您的案例中:

# 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
在admin.py中定义搜索字段:

search_fields = ['modelA__id__exact']


然后得到这样的网址:

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

相关问题