将 url 添加到 Django admin 中 TabularInline 中的字段

Posted

技术标签:

【中文标题】将 url 添加到 Django admin 中 TabularInline 中的字段【英文标题】:Add url to a field in TabularInline in Django admin 【发布时间】:2021-12-25 11:22:43 【问题描述】:

问题不是真实的


如何为 TabularInline 创建来自字段作者的链接?现在我实现了这个(来源:https://***.com/a/10011307/9112151):

class Post(models.Model):
    title = models.CharField(max_lenght=100)
    author = models.ForeignKey('User', on_delete=models.CASCADE)


def add_link_field(target_model = None, field = '', link_text = unicode):
    def add_link(cls):
        reverse_name = target_model or cls.model.__name__.lower()
        def link(self, instance):
            app_name = instance._meta.app_label
            reverse_path = "admin:%s_%s_change" % (app_name, reverse_name)
            link_obj = getattr(instance, field, None) or instance
            url = reverse(reverse_path, args = (link_obj.id,))
            return mark_safe("<a href='%s'>%s</a>" % (url, link_text(link_obj)))
        link.allow_tags = True
        link.short_description = reverse_name + ' link'
        cls.link = link
        cls.readonly_fields = list(getattr(cls, 'readonly_fields', [])) + ['link']
        return cls
    return add_link


@add_link_field('author')
class PostInline(admin.TabularInline):
    model = Post

也许有内置的决定?

【问题讨论】:

【参考方案1】:

Set show_change_link = True 显示内联对象的管理员更改表单的链接

class PostInline(admin.TabularInline):
    model = Post
    show_change_link = True

【讨论】:

谢谢。但我需要在 inline 中显示指向作者的链接 @АльбертАлександров 作者应该呈现为选择/下拉菜单,并且旁​​边应该有一个铅笔和加号图标?这些图标链接到作者/用户的添加和编辑表单,这不是你想要的吗? 它应该是只读的。只是作者更改视图的链接 了解如何。谢谢

以上是关于将 url 添加到 Django admin 中 TabularInline 中的字段的主要内容,如果未能解决你的问题,请参考以下文章

从 1.8 升级到 1.9 Django Admin get_urls 不起作用

Django Admin:Class Media

我无法将表单数据保存到 django 中的数据库

在应用程序 django 中使用 % url 'admin' % 引用管理站点

将多条记录添加到django admin中

独立于应用程序的 django admin 上的新 URL