Ani*_*nda 5 django django-admin
假设我有一个 modelA 和 modelB,它们与 modelA 有外键关系
在 Django Admin 中的任何 modelA 对象页面上,我希望有一个链接到与该 modelA 实例有关系的 modelB 实例的筛选列表。
例如:
从/admin/my_app/modelA/1/change/,我想访问/admin/my_app/modelB/?modelA__id__exact=1。
Ris*_*nha -2
要创建管理更改视图的完整 URL(包括过滤器):
根据https://docs.djangoproject.com/en/4.2/ref/contrib/admin/#reversing-admin-urls中的列表 ,您可以从模型和应用程序标签动态创建 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')
Run Code Online (Sandbox Code Playgroud)
与所有常规reverse()调用一样,将参数添加到kwargs关键字参数列表中。
在更改列表中,搜索参数为q。
在 admin.py 中定义搜索字段:
search_fields = ['modelA__id__exact']
Run Code Online (Sandbox Code Playgroud)
然后获取像这样的url:
change_url = reverse('admin:myapp_modelb_change', kwargs={'q': 1})
Run Code Online (Sandbox Code Playgroud)