Как создать в odoo9 просто представление, которое не сохраняет данные в модели?

Я работаю в odoo9. Теперь мне нужно было представление, позволяющее пользователю выбирать партнера и получать историю его продаж.

Теперь я создал модель «sale.history», но она сохраняет выбранные данные в виде записи в БД. Мне это действительно не нужно.

Как я могу создать представление для этого.

Пожалуйста, посмотрите также это изображение.


person Sebin    schedule 06.09.2016    source источник


Ответы (3)


У вас есть два варианта таких просмотров/отчетов.

  1. Используйте TransientModel вместо Model для наследования модели. Записи переходной модели в базе данных будут удалены часто выполняемым заданием cron. Сообщение электронной почты PopUp/Wizard является хорошим примером для этого.

  2. Напишите свой собственный отчет (представление базы данных) для заказа на продажу. На самом деле для этого уже есть один отчет: Reporting/Sales/Sales Analysis. Модель для этого отчета sale.report, если вы хотите знать, как это делается.

person CZoellner    schedule 06.09.2016

Помимо использования TransientModel (старый API) или AbstractModel (новый API)... вы можете просто установить для свойства store поля значение false, таким образом, ваше поле никогда не будет сохраняться в базе данных, это будет просто поле просмотра '.

class sale_history(model.Model):
    _name='sale.history'

    partner = fields.Many2one('res.partner', store=False)

Поле партнера никогда не будет сохранено в базе данных

person danidee    schedule 06.09.2016

Вы можете использовать store=False в поле модели (как предложил danidee).

Вы также можете перезаписать метод создания модели.

Вопрос - для чего предназначена модель "sale.history"? Если он вообще не хранит никаких данных, вам может быть лучше создать новое представление для «res.partner», а не создавать новую модель.

person Palza    schedule 08.09.2016