2015-04-14 1 views
0

Я хочу сохранить значение поля 'por_sucursal' из класса res_users в поле 'probando' из pruebas значение его логическое и я могу его сохранить i нужен он для фильтра в xml-файле.пытаясь лучше понять методы orm, но я могу сохранить значение в поле

class pruebas(osv.Model): 
    _name = 'pruebas' 
    _description = 'Sucursales de la empresa' 


def dame_usuario2(self, cr, uid, ids, field_names=None, arg=False, context=None): 
    if context is None: 
     context = {} 
    var_pool = self.pool.get('res_users') 
    if var_pool: 
     ids = var_pool.search(cr, uid, [('id','=',uid)]) 
     if ids: 
      return ids[0].por_sucursal 


_columns = {    
     'name': fields.char('prueba', size=50, help="Probando"), 
     'probando': fields.function(dame_usuario2, type='boolean', store=True, 
              readonly = True), 
      } 
pruebas() 

ответ

0

Попробуйте следующее,

class pruebas(osv.Model): 
    _name = 'pruebas' 
    _description = 'Sucursales de la empresa' 


    def dame_usuario2(self, cr, uid, ids, field_names=None, arg=False, context=None): 
     if context is None: 
      context = {} 
     var_pool = self.pool.get('res.users') 
     res = {} 
     for obj in self.browse(cr, uid, ids, context=context): 
      res[obj.id] = False 
      user = var_pool.browse(cr, uid, uid, context=context) 
      if user: 
       res[obj.id] = user.por_sucursal 
     return res 

    _columns = {    
      'name': fields.char('prueba', size=50, help="Probando"), 
      'probando': fields.function(dame_usuario2, type='boolean', store=True, readonly = True), 
       } 
pruebas() 
+0

не оленья кожа записи ничего все значения равны нулю или пустой –

+0

объект «NoneType» не имеет атрибута «просмотра» он пришел с этой ошибкой –

+0

См Я обновил ответ, это потому, что неправильное название модели написано в 'я. pool.get ('res_users') 'на самом деле модель' res.users'. –

0

Подпись для функционального поля:

fnct: function to compute the field value (required) 

    def fnct(self, cr, uid, ids, field_name, arg, context) 
     returns a dictionary { ids→values } with values of type=type 

Посмотрите на тип возвращаемого значения метода, dictionary { ids→values }. Вам нужно вернуть словарь словаря, например {ids: {'key':'value'}} i.e key -> field name.

class pruebas(osv.Model): 
    _name = 'pruebas' 
    _description = 'Sucursales de la empresa' 

    def dame_usuario2(self, cr, uid, ids, field_names=None, arg=False, context=None): 
     result = {} 
     if context is None: 
      context = {} 
     var_pool = self.pool.get('res.users') 
     for obj in self.browse(cr, uid, ids, context=context): 
      value = {} 
      user = var_pool.browse(cr, uid, uid, context=context) 
      if user: 
       value['probando'] = user.por_sucursal 
       result[obj.id] = value 
     return result 

    _columns = {    
      'name': fields.char('prueba', size=50, help="Probando"), 
      'probando': fields.function(dame_usuario2, type='boolean', store=True, readonly = True), 
       } 
pruebas() 
+0

это не сработало, это не дает мне ошибку, но он не сохраняет правильное значение, которое он исправляет или сохраняет False, когда значение True, я собираюсь попробовать ответ, спасибо, в любом случае, я очень благодарен за вашу помощь. –

+0

вы знаете, что я попал в базу данных, и я удаляю поле probando и я снова запустил odoo, и он записывает информацию, но если я изменю значение, это не изменит, оно сохранит первое значение, чтобы как можно удалить все записи из поля каждый раз, прежде чем я переконвертирую это поле? –

 Смежные вопросы

  • Нет связанных вопросов^_^