autoslugfield 进入 django-admin 界面?
Posted
技术标签:
【中文标题】autoslugfield 进入 django-admin 界面?【英文标题】:autoslugfield into django-admin interface? 【发布时间】:2014-10-31 09:03:55 【问题描述】:有没有办法将 django-autoslug 中的 autoslugfield 集成到 Django-admin 界面中? 我尝试将它作为“slug”放在 list_display 中,但它没有显示在 django-admin 界面中。
非常感谢
【问题讨论】:
你试过prepopulated-fields
吗?
【参考方案1】:
这是一个老问题,但也许有人会发现这个答案很有用 在管理界面中显示(并使其可编辑)
所有你需要做的设置可编辑=真
slug = AutoSlugField(populate_from='title', editable=True, blank=True)
现在只有当 slug 没有被填充时它才会自动生成……而且 pupulated_from 中也没有重新生成 slug。
【讨论】:
【参考方案2】:为什么要将它添加到管理界面中?无论如何它不应该是可编辑的。
您可以将其添加为只读字段。
class MyModelAdmin(admin.ModelAdmin):
list_display = ('slug',)
readonly_fields = ('slug',)
【讨论】:
为什么它应该是可编辑的?因为如果您更改名称/标题字段,您希望更新 slug 以匹配。我们可以假设站点管理员知道这会破坏指向使用 slugfield 的任何 URL 的传入链接,但最好给管理员权力而不是把它拿走。 @shacker:如果你想拥有控制权,你不应该使用auto-slug
。但是,有很多简单的方法可以绕过它。我能想到的最简单的方法是定义另一个仅包含 slug 的非托管模型,在这种情况下,它不应该是 auto-slug 字段,而是简单的 Django SlugField
。以上是关于autoslugfield 进入 django-admin 界面?的主要内容,如果未能解决你的问题,请参考以下文章
Django AutoSlugField 不考虑通过 Django Safe Delete 软删除的实例
django 1.10 一个带有链接的应用页面重定向到另一个应用页面