Django скрыть поле слаг для пользователей в пользовательском шаблоне - PullRequest
0 голосов
/ 04 апреля 2020

Я создал форму с автоматически генерируемым полем слагаемого с коротким кодом 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

Был бы какой-нибудь другой способ, которым я мог бы скрыть слагфилд от форму и как правильно сохранить слизняк?

1 Ответ

0 голосов
/ 04 апреля 2020

Сделай свое поколение слизней на заднем плане! Код переднего плана может быть отредактирован в браузере, вы можете изменить его с именем слага.

Сделайте ваше поле слага пустым = True, Null = True и просто заполните, если оно будет сохранено.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...