Django - 模型字段的动态唯一测试

1 投票
1 回答
730 浏览
提问于 2025-04-17 10:22

有没有办法通过自定义函数来检查某个字段的唯一性呢?

类似于这样:

def custom_unique_test(instance):
    return global_test_results(instance)

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

谢谢

1 个回答

2

我猜你想要的情况是,你只关心在某个特定关系中保持唯一性,比如说,你并不需要全局唯一的标识符,所以 unique=True 对你来说“太过于唯一”了,你只需要在每个 CategoryGroup 中的 Category 里保持标识符的唯一性。

我建议你重写 Category.save() 方法。你可以检查 self.pk 来判断这是一个新插入的记录还是更新的记录,如果是插入的话,你可以在调用 super(Category, self).save(*args, **kwargs) 之前,先运行你自定义的唯一性检查和标识符生成的代码。

撰写回答