Почему odoo One2many не сильно удаляет строки? - PullRequest
0 голосов
/ 29 апреля 2020

Я наблюдал за таблицей, к которой относится поле One2many. Когда я удалил строку из виджета One2many из полных One2many, реальная строка внутри таблицы не была удалена.

В строке только что для столбца внешнего ключа установлено значение NULL.

Можем ли мы изменить это поведение, чтобы навсегда (жестко) удалить связанную строку?

Почему дизайнер выбрал именно это поведение? Любое техническое соображение, почему?

Спасибо

1 Ответ

0 голосов
/ 05 мая 2020

В поле отношения есть параметр Ondelete. Имеется 3 варианта

  1. Каскад (удалить, когда поле отношения удаляется.)
  2. Установить на NULL (установить нулевое значение в поле отношения).
  3. Ограничить (будет не позволяет удалять, если установлено как отношение.)

Можем ли мы изменить это поведение, чтобы навсегда (жестко) удалить связанную строку?

Для этого Вы должны объявить M2O с 2 параметрами. Это должно быть обязательным, а удаление должно быть каскадным. Пример Odoo

class ProductAttribute(models.Model):
    _name = "product.attribute"

    value_ids = fields.One2many('product.attribute.value', 'attribute_id', 'Values', copy=True)

class ProductAttributeValue(models.Model):
    _name = "product.attribute.value"
    attribute_id = fields.Many2one('product.attribute', string='Attribute', ondelete='cascade', required=True, index=True)
...