python - 在 create() 之前检查值是否有效
问题描述
您好我正在尝试从 CSV 导入行,但我无法处理类型错误。例如,如果您在日期时间字段中插入一个字符串,我会在创建时收到此错误:
psycopg2.errors.InFailedSqlTransaction: current transaction is aborted, commands ignored until end of transaction block
尽管处理错误
try:
my_module.create()
exception Except:
#stuff
pass
如何在创建或至少处理错误并采取其他措施之前检查这些值。目前,如果我插入一个选择中不存在的字段,我会使用 try catch 进行管理,但我不能用于数据类型
解决方案
有一种方法load(fields, data)
可以BaseModel
扩展。
class MyModel(models.Model):
# if a new model
_name = 'my.model'
# if an extended model
# _inherit = 'my.model'
def load(self, fields, data):
""" Extended to do stuff to the data before importing it to database"""
# do stuff like converting weird data input
clean_data = self.clean_data(data)
# call super with cleaned data afterwards
return super(MyClass, self).load(fields, clean_data)
推荐阅读
- flutter - 应该只有一项具有 [DropdownButton] 的值:
- swift - 将鼠标悬停在分隔符上时,是否可以在 NSSplitView 中暂时禁用鼠标光标更改?
- c# - 如何仅在软件更新时初始化新值?
- rust - 由于需求冲突,推断寿命失败
- python-3.x - 从特定字符串 Python 解码
- python - 机器人黑名单 Discord.py
- python - 创建可以通过“导入”重用的python对话框的正确方法是什么?
- python - 插入的记录未显示在 MS Access 数据库表中
- c# - 将 C# dateTime 字符串转换为 TypeScript 的日期
- objective-c - 如何在快速扩展中实现目标 C 类的目标 C 委托函数