在Django中,我编写了一个自定义的基于类的验证器,并实现了
以下是代码示例:
__eq__
方法,因为这也是Django本身已经实现的验证器所做的。以下是代码示例:
@deconstructible
class FileSizeValidator:
def __init__(self, mb):
self.mb = mb
def __call__(self, value):
limit = self.mb * 1024 * 1024
if value.size > limit:
raise ValidationError('File too big (max. ' + str(self.mb) + ' MiB).')
def __eq__(self, other):
return (
isinstance(other, FileSizeValidator) and
self.mb == other.mb
)
现在,我已经为 ImageField
编写了一个自定义类。我想将其用于 ImageField
模型中的 upload_to=
参数。以下是我的示例:
@deconstructible
class RandomFileName:
def __init__(self, directory=''):
self.directory = directory
def __call__(self, instance, filename):
return self.directory + ("/" if self.directory else '') + get_random_string(7) + "." + filename.split('.')[-1]
def __eq__(self, other):
return (
isinstance(other, RandomFileName) and
self.directory == other.directory
)
总体来说,我对它感到满意,似乎也运行良好。我只是不知道何时需要使用__eq__
方法,希望您能给出解释。
mb
属性的值。可能会有10个以上的属性具有不匹配的值,但如果此值匹配,则其他任何事情都无关紧要。 - Ankit Jaiswal__eq__
方法呢? - Aliquis