>

모델을 만들 때 유형이있는 필드를 만듭니다.

wrong_field = fields.Char('Wrong')

이제이 필드를 수정하고 날짜를 새 필드로 마이그레이션하고 싶습니다. odoo 문서에서 키워드 "oldname"을 찾았습니다. 필드를 다음과 같이 변경합니다 :

right_field = fields.Char('Right', oldname='wrong_field')

그러나 작동하지 않았지만 새로운 필드에는 데이터가 없었습니다.
왜 작동하지 않습니까? 어떻게 해결할 수 있습니까?
감사합니다!


  • 답변 # 1

    해결했습니다. 다음 코딩에 따르면 :

    def update_db(self, model, columns):
        """ Update the database schema to implement this field.
            :param model: an instance of the field's model
            :param columns: a dict mapping column names to their configuration in database
            :return: ``True`` if the field must be recomputed on existing rows
        """
        if not self.column_type:
            return
        column = columns.get(self.name)
        if not column and hasattr(self, 'oldname'):
            # column not found; check whether it exists under its old name
            column = columns.get(self.oldname)
            if column:
                sql.rename_column(model._cr, model._table, self.oldname, self.name)
        # create/update the column, not null constraint, indexes
        self.update_db_column(model, column)
        self.update_db_notnull(model, column)
        self.update_db_index(model, column)
        return not column
    
    

    rig_field는 테이블에 없어야합니다. 먼저 데이터베이스에서 테이블의 right_field를 삭제하고 다시 업데이트하십시오.

  • 이전 로열티 카드를 Android Pay에 저장
  • 다음 sorting - 파이썬에서 객체를 정렬하는 방법