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

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

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

для 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.