2012-01-16 14 views
1

カスタム関数を使用してフィールドの一意性をテストする方法はありますか?Django - モデルフィールドの動的ユニークテスト

のような何か:

def custom_unique_test(instance): 
    return global_test_results(instance) 

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

おかげ

答えて

2

私はあなたのユースケースは、あなただけの大きなグループと何らかの関係の中に一意性を気にしていることであると仮定している - 例えば、あなたが世界的に必要はありませんユニークなスラッグは、unique=Trueが「あまりにもユニーク」なので、それぞれCategoryのユニークなスラッグをCategoryGroupに入れるだけです。

Category.save()を無効にすることをお勧めします。 self.pkをチェックして、これが挿入か更新かを確認し、挿入されている場合は、super(Category, self).save(*args, **kwargs)を呼び出す前に独自の固有チェックとスラッグ生成コードを呼び出すことができます。

+0

恐ろしい!それはまさに私が必要としたものです。ありがとうございます。 – thyagx

関連する問題