Django - динамический уникальный тест для модельного поля - PullRequest
1 голос
/ 16 января 2012

Есть ли способ проверить уникальность поля с помощью пользовательской функции?

Что-то вроде:

def custom_unique_test(instance):
    return global_test_results(instance)

class Category(models.Model)
    slug = models.SlugField(unique=custom_unique_test())

Спасибо

1 Ответ

2 голосов
/ 16 января 2012

Я предполагаю, что ваш вариант использования заключается в том, что вы заботитесь только об уникальности в некотором отношении с большой группой - например, вам не нужны глобально уникальные слагы, поэтому unique=True "слишком уникально", вам нужно только уникальные слизни для каждого Category в пределах CategoryGroup.

Я бы предложил переопределить Category.save(). Вы можете проверить self.pk, чтобы увидеть, является ли это вставкой или обновлением, и если это вставка, вы можете вызвать свой пользовательский код уникальной проверки и генерации слагов, прежде чем вызывать super(Category, self).save(*args, **kwargs).

...