gpt4 book ai didi

django - 如何在验证 Django 中的父字段的子类中添加自定义验证器

转载 作者:行者123 更新时间:2023-12-04 05:45:10 25 4
gpt4 key购买 nike

在 Django 中,我有一个包含一些公共(public)字段的父抽象类,以及一些添加更多字段的子类。在其中一些子类中,我想添加自定义验证器来验证父类上的字段。

class Template(models.Model):
text = models.CharField(max_length=200)

class GlobalTemplate(Template):
function = models.ManyToManyField(Function, null=True, blank=True)

我可以像这样轻松地将它们添加到父类的字段中:
class Template(models.Model):
text = models.CharField(max_length=200, validators=[validate_custom])

但在这种情况下,我想将验证器添加到我的子类 GlobalTemplate,但将其附加到文本字段。

这在 Django 中可能吗?

谢谢!

最佳答案

字段验证器存储在 field.validators ,它是一个列表,所以你基本上需要在那里附加你的验证器。

要访问字段实例,您必须使用 _meta你的对象的属性(注意你不应该使用这个属性,所以当你更新 django 时,你必须检查它是否没有改变)。你可以这样做:

def get_fields_dict(self):
return dict((field.name, field) for field in self._meta.fields)

def __init__(self, *args, **kwargs):
super(GlobalTeplate, self).__init__(*args, **kwargs)
text_field = self.get_fields_dict()['text']
text_field.validators.append(validate_custom)

关于django - 如何在验证 Django 中的父字段的子类中添加自定义验证器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10776522/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com