如何为CharField指定黑名单。然而,我希望黑名单在Django管理面板aswell...otherwise中有效,我只会在视图中验证它。
黑名单指的是不能使用的值。我还为值设置了唯一,但我也想禁用一些字符串。
谢谢,麦克斯
发布于 2009-07-29 05:42:13
在调用父类的save()方法之前,我会根据黑名单覆盖模型的save()方法和要插入的值。
类似这样的东西(简化):
class BlackListModel(models.Model):
blacklist = ['a', 'b', 'c']
# your model fields definitions...
def save(self, *args, **kwargs):
if self.blacklist_field in self.blacklist:
raise Exception("Attempting to save a blacklisted value!")
return super(BlackListModel, self).save(*args, **kwargs)
这样它就可以在你所有的应用程序中工作。
发布于 2018-12-19 12:37:45
由于我们已经晚了几年,您应该编写一个自定义黑名单验证器:
from django.db import models
from django.core.exceptions import ValidationError
def validate_blacklist(value):
if value in ['a', 'b', 'c']:
raise ValidationError(
"'a', 'b' and 'c' are prohibited!",
params={'value': value},
)
class MyModel(models.Model):
even_field = models.CharField(max_length=200, validators=[validate_even])
有关完整文档,请参阅:Django Validators。
发布于 2009-07-29 04:59:16
这是不可能开箱即用的。您必须编写custom form field或以其他方式添加custom admin handling才能进行管理员级别的验证。要在数据库级别执行此操作,我怀疑您可能需要设置某种类型的触发器和存储过程,但这不是我的领域,因此我将把它留给其他人。
https://stackoverflow.com/questions/1200046
复制