Форум сайта python.su
Каким образом можно сделать так чтобы поле slug заполнялось автоматически и не отображалось при добавлении объекта через админку.
Офлайн
Хм.. через prepopulated_fields
Офлайн
Вообще никак не реагирует на него. В админке поле slug отображается жирным цветом как обязательное поле.
Офлайн
jokurтак для этого надо editable=False ему сделать
В админке поле slug отображается жирным цветом как обязательное поле.
Офлайн
Теперь выдает “Key ‘slug’ not found in Form”. Почему?
Офлайн
Вообще-то сразу надо сказать, что prepopulated_fields не очень дружит с русскими тайтлами. Но суть не в этом.
Если их использовать, то да, поле на форме быть должно, но надо его пометить как blank=True, тогда оно станет необязательным. Соответственно, при обработке формы в slug попадет профильтрованное значение из поля которое вы задали. editable=True совсем говорит форме не использовать это поле, на что она в последствии ругается, т.к. не может его найти.
Я бы советовал, наверно, вообще отказаться от этой возможно и реализовать руками, используя пакет pytils. Всё локигу можно в методе save модели разместить. Например:
def save(self, *args, **kwargs):
from pytils import slugify
self.slug = slugify(self.title)
super(MyModel, self).save(*args, **kwargs)
Офлайн
Хорошо, при editable = True и prepopulated_fields = ‘date’(date = models.DateTimeField(auto_now_add=True)) у меня в админке поле slug сразу автоматически генерируется, но при одинаковый значениях title оно не делается уникальным, а надо! Как мне такое можно реализовать?
У меня прописан метод save в моей модели для генерации уникального slug и даже поле slug имеет параметр unique_for_date='date'. Но все равно всем записям имеющим одинаковый заголовок присваивается не уникальный slug.
P.S. Для генерации slug использую пакет pytils.
Офлайн
jokurТак уж вы разберитесь, как вы хотите slug генерировать, от даты или от заголовка. Так в save и пропишите.
у меня в админке поле slug сразу автоматически генерируется, но при одинаковый значениях title оно не делается уникальным, а надо!
Офлайн
На сколько я понял метод save вообще для админки не указ. Там вся генерация slug происходит встроенным джаваскриптом. Можно ли как то не прибегая к адаптации этого самого джаваскрипта добиться генерации уникального значения slug через АДМИНКУ?
Офлайн
jokurНет.
На сколько я понял метод save вообще для админки не указ.
def save(self, *args, **kwargs):
from pytils import slugify
self.slug = slugify(self.title)
super(MyModel, self).save(*args, **kwargs)
Офлайн