如果我不小心在模型上输入字段名称,我想提出异常而不是默默地失败:
obj = MyModel()
obj.fieldsdoesnotexist = 'test' # No exception is raised
如何在设置无效字段时让Django引发异常?
答案 0 :(得分:2)
你可以通过创建覆盖这样的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 MyModel(ValidateFieldNamesMixin, Model):
# etc