模型形式中的 django auto slug,例如 django admin 中的预填充字段

Posted

技术标签:

【中文标题】模型形式中的 django auto slug,例如 django admin 中的预填充字段【英文标题】:django auto slug in model forms like prepopulated-fields in django admin 【发布时间】:2010-11-26 04:22:55 【问题描述】:

有没有办法在标准模型表单中使用 django 管理站点中的预填充字段来获得相同的结果

【问题讨论】:

【参考方案1】:

嗯,django 是开源的,所以如果你想复制某些行为,你可以read the code 并选择你喜欢的东西。例如,您可以看到 contrib.admin 使用名为 urlify.js 的脚本来执行动态 slugging,用法如下:

<script type="text/javascript" src="/admin-media/js/urlify.js"></script>
<script type="text/javascript">
document.getElementById("id_title").onkeyup = function() 
    var e = document.getElementById("id_slug");
    if (!e._changed)  e.value = URLify(document.getElementById("id_title").value, 50); 

</script>

...当然取决于您的管理媒体的来源(我的来自“/admin-media/”)

或者,如果您愿意在视图中进行 slugifying,您可以使用 django.template 中使用的函数作为 slugify 过滤器:django.template.defaultfilters.slugify。

【讨论】:

更新: * 管理员 javascript 的路径是 /static/admin/js/urlify.js 或在带有静态模板标签 % static 'admin/js/urlify.js' % 的模板中 * URLify(s, num_chars, allowUnicode) 现在允许使用 Unicode,所以你需要将true/false 添加到 URLify 函数调用中。 另外,还需要包含一个额外的脚本/static/admin/js/vendor/xregexp/xregexp.min.js【参考方案2】:
<script type="text/javascript" src="/media/js/urlify.js"></script>

 

var slug = document.getElementById("id_slug").value;

document.getElementById("id_name").onkeyup = function() 
    if (slug == '') 
        document.getElementById("id_slug").value = URLify(document.getElementById("id_name").value, 50);
    

【讨论】:

以上是关于模型形式中的 django auto slug,例如 django admin 中的预填充字段的主要内容,如果未能解决你的问题,请参考以下文章

通过避免 django 模型保存方法中的完整性错误来增加 slug

Django:两个模型中的一个 url 搜索(cbv)

如何在 Django 中自定义 slug 字段?

Django:为数据库中的现有条目生成 slug 字段数据

基于 Django 类的“method_splitter” - 分别传递 2 个 slug 作为模型名称和字段值

Django UserProfile slug 字段