假设,我有一个模型a和模型B,它与模型a 具有ForeignKey关系
在Django Admin的任何modelA对象页面上,我希望有一个链接,指向与该modelA实例有关系的modelB实例的过滤列表。
例如:
从/admin/my_app/modelA/1/change/
,我想访问/admin/my_app/modelB/?modelA__id__exact=1
。
创建管理更改视图的完整URL,包括过滤器:
- 反转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')
- 添加过滤器参数
与所有常规reverse()
调用一样,将参数添加到kwargs
关键字参数列表中。
在变更列表中,搜索参数为q
。
在管理员中定义搜索字段.py:
search_fields = ['modelA__id__exact']
然后得到这样的网址:
change_url = reverse('admin:myapp_modelb_change', kwargs={'q': 1})