我有一个Django应用程序。有时在生产中,当上传数据时,其中一个值太长会出错。如果我可以看到哪个值超过了限制,这将对调试非常有帮助。我可以以某种方式配置它吗?我正在使用MySQL。
如果可以在每个模型或列的基础上启用/禁用此功能,这样也不会将用户数据泄漏到错误日志中,那也很好。
在从外部来源创建模型实例时,必须注意验证输入或具有其他保证,即此数据不会违反约束。
当不至少full_clean()
在模型上调用,而是直接调用时save
,将绕过Django的验证器,并且只会由数据库驱动程序发出有关该问题的警报,这时很难获取诊断信息:
class JsonImportManager(models.Manager):
def import(self, json_string: str) -> int:
data_list = json.loads(json_string) # list of objects => list of dicts
failed = 0
for data in data_list:
obj = self.model(**data)
try:
obj.full_clean()
except ValidationError as e:
print(e.message_dict) # or use better formatting function
failed += 1
else:
obj.save()
return failed
这当然很简单,但是这是一个很好的入门模板。