Я создал форму с автоматически генерируемым полем слагаемого с коротким кодом js. Я хотел бы скрыть поле 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
, но он просто не добавил бы слаг, потому что я нацелил слаг с помощью ввода в slugify.js
.
Я пробовал editable = False
на slugField, но это выдает ошибку
django.core.exceptions.FieldError: 'slug' cannot be specified for VideoPost model form as it is a non-editable field
Был бы какой-нибудь другой способ, которым я мог бы скрыть слагфилд от форму и как правильно сохранить слизняк?