django - 更改列表链接到外键更改页面

标签 django django-models django-admin

查看模型的管理更改列表时,是否可以将与外键对应的列链接到各自的页面?一个简单的例子是我有一个包含 Bar 作为外键的 Foo 对象。如果我正在查看 Foo 的管理更改列表(并将其设置为在 display_list 列中包含 Bar),则主列将链接到 Foo 实例的编辑页面,而 Bar 列将链接到 Boo 实例的编辑页面。我知道我可以覆盖使用的模板,但我很好奇是否有不需要的解决方案。

最佳答案

您可以定义一个自定义方法以在返回链接的 HTML 的更改列表中使用。

from django.core.urlresolvers import reverse

class MyFooAdmin(admin.ModelAdmin):
    list_display = ('foo', 'bar_link')

    def bar_link(self, obj):
        url = reverse('admin:myapp_bar_change', args=(obj.pk,))
        return '<a href="%s">Edit Bar</a>' % url 
    bar_link.allow_tags = True 

如上所述,您的问题存在一个问题 - 如果 Foo 有 Bar 的外键,则每个 foo 都链接到一个栏,因此您可以链接到该栏的编辑页面。但是,每个栏都链接到多个 foo,因此请求指向“Foo 实例的编辑页面”的链接是没有意义的。您可以做的是链接到 Foo 的更改列表页面,并将过滤器设置为仅显示链接到此栏的实例:
    def foo_link(self, obj):
        url = reverse('admin:myapp_foo_changelist')
        return '<a href="%s?bar=%s">See Foos</a>' % (url, obj.pk) 
    foo_link.allow_tags = True 

关于django - 更改列表链接到外键更改页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1413830/

相关文章:

python - 在 django admin 中按自定义列表显示字段列表过滤器

python - 尝试启动 uwsgi 时出现致命的 Python 错误 : init_fs_encoding: failed to get the Python codec of the filesystem encoding,

Django 将参数传递给模型中的自定义方法(或访问请求)

python - 具有相同字段的 Django 用户模型

django - 如何从 Django Admin 的 response_change 中获取自定义表单字段值?

python - django:覆盖 get_Form 内联

django - 在 Django 管理中替换 "this field is required"消息

django - 具有通过将自动字段与定义的字符 Django 连接起来生成的值的字段

django - 如何更改默认用户模型?

python - Django AttributeError 'datetime.date' 对象没有属性 'utcoffset'