Existe uma maneira fácil de preencher SlugField de CharField?

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

Existe uma maneira interna para obter o campo lesma para Preencher automaticamente com base no título? Talvez na administração e fora da administração.

Publicado 26/09/2008 em 20:40
fonte usuário
Em outras línguas...                            


5 respostas

votos
58

por Admin dentro Django 1.0 e acima, você precisaria usar

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

em sua admin.py

A sua chave no dicionário prepopulated_fields é o campo que deseja preenchido, eo valor é uma tupla de campos que você quer concatenada.

Fora de admin, você pode usar a slugifyfunção em seus pontos de vista. Em modelos, você pode usar o |slugifyfiltro.

Há também esse pacote que vai cuidar disso automaticamente: https://pypi.python.org/pypi/django-autoslug

Respondeu 26/09/2008 em 20:51
fonte usuário

votos
6

Fora da administração, ver esse trecho Django . Coloque-o na sua .save(), e ele vai trabalhar com objetos criados programaticamente. Dentro do admin, como os outros disseram, use prepopulated_fields.

Respondeu 26/09/2008 em 21:59
fonte usuário

votos
4

Para o pré-1.0:

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

deve funcionar muito bem

Para 1.0, utilize camflan de

Respondeu 26/09/2008 em 20:44
fonte usuário

votos
2

Você também pode usar o sinal django pre_save para preencher lesma fora do código de administração do Django. Veja Django documentação sinais .

Ajax lesma validação singularidade será útil também, ver As-You-Type Slug Unicidade Validação @ exuberância irracional

Respondeu 30/09/2008 em 14:31
fonte usuário

votos
0

autoslug tem funcionado muito bem para mim no passado. Embora eu nunca tentei usá-lo com o aplicativo de administração.

Respondeu 19/09/2011 em 13:23
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more