Django在自定义模板中将slug字段隐藏给用户

2024-10-04 03:22:17 发布

您现在位置:Python中文网/ 问答频道 /正文

我已经构建了一个表单,它使用短js代码自动生成slug字段。 我想向用户隐藏slug字段,以防止它们被编辑

//slugify.js

const titleInput = document.querySelector('input[name=title');
const slugInput = document.querySelector('input[name=slug]');

const slugify = (val) => {
    return val.toString().toLowerCase().trim()
        .replace(/&/g, '-and-') // replacing & with '-and-'
        .replace(/[\s\W-]+/g, '-') //replcaing spaces, non-word chars and dashes with a single '-'
};

titleInput.addEventListener('keyup', (e) => {
    slugInput.setAttribute('value', slugify(titleInput.value));
});
//models.py
slug = models.SlugField(max_length=100, unique = True)

当我从forms.py中删除它时,slugfield变为空白。我知道问题是什么,但我不知道该怎么解决。 我尝试从forms.py中删除slugfield,但它不会添加slug,因为我使用slugify.js中的输入来定位slug

我在slugField上尝试了editable = False,但它会给我一个错误

django.core.exceptions.FieldError: 'slug' cannot be specified for VideoPost model form as it is a non-editable field

有没有其他方法可以让我从表单中隐藏slugfield并正确保存slug


Tags: andnamepy表单inputjsvaldocument
1条回答
网友
1楼 · 发布于 2024-10-04 03:22:17

在后端执行slug生成!前端代码可以在浏览器中编辑,任何人都可以修改slug名称

将slug字段设置为空=True,Null=True,并在保存时填充它

相关问题 更多 >