模型形式中的 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