在模型实例上设置无效字段时强制引发异常
Force exception to be raised when setting invalid field on model instance
如果我不小心在模型上打错了字段名称,我想引发异常而不是默默地失败:
obj = MyModel()
obj.fieldsdoesnotexist = 'test' # No exception is raised
如何让 Django 在设置无效字段时引发异常?
您可以通过创建覆盖 setattr 行为的 Mixin 来实现此目的,如下所示:
class ValidateFieldNamesMixin:
def __setattr__(self, name, value):
if not hasattr(self, name):
raise ValueError('Invalid field name!')
return super().__setattr__(name, value)
而且你必须在你的 MyModel 中继承这个 mixin class:
class MyModel(ValidateFieldNamesMixin, Model):
# etc
如果我不小心在模型上打错了字段名称,我想引发异常而不是默默地失败:
obj = MyModel()
obj.fieldsdoesnotexist = 'test' # No exception is raised
如何让 Django 在设置无效字段时引发异常?
您可以通过创建覆盖 setattr 行为的 Mixin 来实现此目的,如下所示:
class ValidateFieldNamesMixin:
def __setattr__(self, name, value):
if not hasattr(self, name):
raise ValueError('Invalid field name!')
return super().__setattr__(name, value)
而且你必须在你的 MyModel 中继承这个 mixin class:
class MyModel(ValidateFieldNamesMixin, Model):
# etc