Django имеет свойство unique_for_date, которое вы можете установить при добавлении SlugField к вашей модели. Это приводит к тому, пробкового быть уникальным только для даты поля вы указываете:Как создать пул unique_for_field в Django?
class Example(models.Model):
title = models.CharField()
slug = models.SlugField(unique_for_date='publish')
publish = models.DateTimeField()
Что бы быть лучшим способом для достижения такой же функциональности для не-DateTime поле как ForeignKey? В идеале, я хочу сделать что-то вроде этого:
class Example(models.Model):
title = models.CharField()
slug = models.SlugField(unique_for='category')
category = models.ForeignKey(Category)
Таким образом, я мог бы создать следующие ссылки:
/example/category-one/slug
/example/category-two/slug
/example/category-two/slug <--Rejected as duplicate
Мои идеи до сих пор:
Добавить уникальный индекс для slug и categoryid для таблицы. Для этого требуется код вне Django. И будет ли встроенный администратор корректно обрабатывать это, когда вставку/обновление не удастся?
Отмените сохранение модели и добавьте мою собственную проверку, выбросив ошибку, если существует дубликат. Я знаю, что это сработает, но это не кажется очень сухим.
Создайте новое поле пули, наследующее базу, и добавьте туда функцию unique_for. Кажется, это лучший способ, но я просмотрел код уникального_сочетания ядра, и он не казался очень интуитивным, чтобы его расширять.
Любые идеи, предложения или предложения по наилучшему способу сделать это?
Конечно, это так просто. Спасибо за помощь и обновление ответа! –