Есть ли простой способ заполнить SlugField от CharField?

class Foo(models.Model): title = models.CharField(max_length=20) slug = models.SlugField() 

Есть ли встроенный способ получить поле пули для автопопуляции на основе заголовка? Возможно, в Admin и вне Admin.

5 Solutions collect form web for “Есть ли простой способ заполнить SlugField от CharField?”

для Admin в Django 1.0 и выше, вам нужно будет использовать

 prepopulated_fields = {'slug': ('title',), } 

в вашем admin.py

Ваш ключ в словаре prepopulated_fields – это поле, которое вы хотите заполнить, а значение – кортеж полей, которые вы хотите объединить.

Вне администратора вы можете использовать функцию slugify в своих представлениях. В шаблонах вы можете использовать фильтр |slugify .

Существует также этот пакет, который позаботится об этом автоматически: https://pypi.python.org/pypi/django-autoslug

Вне администратора, см. Этот фрагмент django . Поместите его в свой .save() , и он будет работать с объектами, созданными программно. Внутри администратора, как говорили другие, используйте prepopulated_fields .

Для pre-1.0:

 slug = models.SlugField(prepopulate_from=('title',)) 

должен отлично работать

Для 1.0 используйте camflan's

Вы также можете использовать pre_save django signal для заполнения пули вне кода администратора django. См. Документацию по протоколам Django .

Валидация уникальности пустых строк Ajax также будет полезна, см. Проверка уникальности уникального атрибута As-You-Type @ Irrational Exuberance

autoslug работал для меня в прошлом. Хотя я никогда не пробовал использовать его с помощью приложения admin.

  • Канонические ссылки и 301 Перенаправление, если URL-адрес не соответствует slug
  • Использование Slugify в URL-адресах Django
  • Как сделать Django slugify правильной работой с строками Unicode?
  • Включить строку в действительное имя файла?
  • Python - лучший язык программирования в мире.