2016-04-21 6 views
-1

Пожалуйста, в форме просмотра Я хочу использовать поле в качестве ключа, и оно должно быть уникальным для каждой записи, чтобы использовать его чтобы просмотреть таблицу в других представлениях, как это сделатьИспользуйте поле в качестве ключа, и оно должно быть уникальным для каждой записи, чтобы использовать его для просмотра таблицы (Openerp)

class saisirsoum(osv.osv): 
     _name='saisir.soum' 

     _columns = { 
     'NumOffre' : fields.char('N° Offre'), # to be defined as key !! 
     'organisme_s' : fields.char('Organisme'), 
     'des_offre' : fields.char('Designation'), 
     'order_line' :fields.one2many('saisir.soumission.ligne','order_id','soumission_id'), 
     'observation_d' : fields.text('Observation'), 
    } 
+0

я действительно не понимаю ваш вопрос ... Вы хотите, чтобы получить уникальный идентификатор поля (в вид) на отправку, а затем использовать его для поиска? – danidee

+0

Да, точное использование NumOffre как ключ – khelifa

ответ

0

в вашем случае вы будете делать NumOffre уникальным, как это, установив переменную _sql_constraints. где вы также можете определить настраиваемое сообщение, которое будет отображаться, когда пользователь попытается добавить дублируемую запись.

class saisirsoum(osv.osv): 

    _name='saisir.soum' 

    _sql_constraints = [ 
    ('NumOffre', 'unique(NumOffre)', 'NumOffre already exists'), 
    ] 

    _columns = { 
    'NumOffre' : fields.char('N° Offre'), # to be defined as key !! 
    'organisme_s' : fields.char('Organisme'), 
    'des_offre' : fields.char('Designation'), 
    'order_line' :fields.one2many('saisir.soumission.ligne','order_id','soumission_id'), 
    'observation_d' : fields.text('Observation'), 
    } 


    def create(self, cr, uid, vals, context=None): # when the record is about to created 
     NumOffre = vals.get('NumOffre') #get NumOffre from the form 
     if NumOffre: 
      pass # you can do something with it e.g searching 

     return super(saisirsoum, self).create(cr, uid, vals, context=context) # finally call the create method from the super class and create the record after you're done 

Вы также можете переопределить другие методы CR как write и unlink таким же образом

+0

Я отредактировал свой ответ. убедитесь, что у вас еще нет дубликатов «NumOffre» в вашей базе данных. если вы их удалили, а затем обновите модуль, а odoo должен сделать ваше поле уникальным. – danidee

+0

спасибо danidee – khelifa

+0

он по-прежнему принимает одно и то же имя (NumOffre) для двух записей !!!!!! – khelifa