python - example - ¿Hay alguna manera fácil de poblar SlugField desde CharField?
slug url django (5)
class Foo(models.Model):
title = models.CharField(max_length=20)
slug = models.SlugField()
¿Hay una forma incorporada de hacer que el campo de babosas se autopobla según el título? Quizás en el administrador y fuera del administrador.
Fuera del administrador, mira este fragmento de django . Ponlo en tu .save()
, y funcionará con objetos creados mediante programación. Dentro del administrador, como han dicho los otros, usa prepopulated_fields
.
También puede usar la señal pre_save django para rellenar slug fuera del código de administración de django. Ver la documentación de las señales de Django .
La validación de unicidad de sjag de Ajax también será útil; consulte Validación de unicidad de babosas según lo que se utiliza según el tipo @ Exudación irracional
autoslug me ha funcionado bastante bien en el pasado. Aunque nunca intenté usarlo con la aplicación de administración.
para Admin en Django 1.0 y versiones superiores, necesitarías usar
prepopulated_fields = {''slug'': (''title'',), }
en tu admin.py
Su clave en el diccionario prepopulated_fields es el campo que desea rellenar, y el valor es una tupla de campos que desea concatenar.
Fuera de admin, puede usar la función slugify
en sus vistas. En plantillas, puede usar el filtro |slugify
.
También hay este paquete que se ocupará de esto automáticamente: https://pypi.python.org/pypi/django-autoslug
Para pre-1.0:
slug = models.SlugField(prepopulate_from=(''title'',))
debería funcionar bien
Para 1.0, use camflan''s