首页 > 解决方案 > 在 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 进行管理,但我不能用于数据类型

标签: pythonpostgresqlodoo

解决方案


有一种方法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)

推荐阅读