Odoo, как скрыть элемент из поля many2one? - PullRequest
0 голосов
/ 27 декабря 2018

Odoo-10

My .py

class komMo(models.Model):
    _name = 'kom.mo'

    mo_id = fields.Integer(string='Code mo') #this is just the recognition number
    name = fields.Char(string='Name mo') 

    parent_id = fields.Many2one('kom.mo')

Form for editing

Я хочу скрыть параметр (пример) извыпадающий список («parent_id»), если это имя самого объекта

Поэтому, когда я собираюсь редактировать «пример», я не хочу, чтобы меня предлагали в качестве опции в поле »parent_id '

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

Если я не понял, пожалуйста, сообщите мне.мой XML-файл был довольно простым, я не добавил ни параметров, ни атрибутов

1 Ответ

0 голосов
/ 27 декабря 2018

Просто добавьте этот домен в поле domain="[('id', '!=', id)]".Это удалит объект для его собственной формы.

Вы также можете использовать систему вложенных множеств odoo для родительских и дочерних отношений, что имеет большое преимущество в разрешении запроса родительских дочерних отношений, установив _parent_store = True в определении моделей, идобавив parent_left, parent_right поля, вы также можете использовать @api.constraint на parent_id, вызывая odoo Models _check_recursion, чтобы гарантировать, что не будет рекурсивного создания родительских дочерних отношений.Например, для модели odoo Product category:

class ProductCategory(models.Model):
    _name = "product.category"
    _description = "Product Category"
    _parent_name = "parent_id"
    _parent_store = True
    _parent_order = 'name'
    _rec_name = 'complete_name'
    _order = 'parent_left'

    parent_id = fields.Many2one('product.category', 'Parent Category', index=True, ondelete='cascade')
    parent_left = fields.Integer('Left Parent', index=1)
    parent_right = fields.Integer('Right Parent', index=1)

    @api.constrains('parent_id')
    def _check_category_recursion(self):
        if not self._check_recursion():
            raise ValidationError(_('Error ! You cannot create recursive categories.'))
        return True
...