Django tiene una propiedad unique_for_date que puede establecer al agregar un SlugField a su modelo. Esto hace que la bala sea único sólo para las fechas del campo especifica:¿Cómo crear una babosa unique_for_field en Django?
class Example(models.Model):
title = models.CharField()
slug = models.SlugField(unique_for_date='publish')
publish = models.DateTimeField()
¿Cuál sería la mejor manera de lograr el mismo tipo de funcionalidad para un campo no DateTime como un ForeignKey? Idealmente, quiero hacer algo como esto:
class Example(models.Model):
title = models.CharField()
slug = models.SlugField(unique_for='category')
category = models.ForeignKey(Category)
Esta manera de que pudiera crear las siguientes direcciones:
/example/category-one/slug
/example/category-two/slug
/example/category-two/slug <--Rejected as duplicate
Mis ideas hasta el momento:
Añadir una índice único para el slug y categoryid para la tabla. Esto requiere un código fuera de Django. ¿Y el administrador integrado manejaría esto correctamente cuando falla la inserción/actualización?
Anule el guardado para el modelo y agregue mi propia validación, lanzando un error si existe un duplicado. Sé que esto funcionará, pero no parece muy SECO.
Crea un nuevo campo slug que hereda de la base y agrega allí la funcionalidad unique_for. Esto parece ser la mejor manera, pero miré a través del código unique_for_date del núcleo y no me pareció muy intuitivo extenderlo.
Cualquier ideas, sugerencias u opiniones sobre la mejor manera de hacer esto?
Por supuesto, es así de simple. Gracias por la ayuda y la actualización de la respuesta! –