2017-02-15 9 views
2

У меня проблема с размером базы данных. В базе данных у меня более 40 000 клиентов и каждый из них имеет изображение, основанное на типе клиента, поэтому может быть только 15 изображений. каждый из тех клиентов, имеющих это изображение, поэтому размер моей базы данных увеличился, и я не хочу этого.Как установить изображение клиента из папки не из базы данных в odoo

Я хочу, чтобы решение было установить изображение в клиенте из filestore или папки, поэтому он принимает изображение оттуда, поэтому мне нужно хранить только 15 изображений.

Заранее спасибо.

ответ

1

Вложения могут храниться в filestore. Возможный способ для хранения изображений в виде вложений, например, имеет _set_picture() и _get_picture() методы и вычисленные двоичные поля, который использует их для создания/обновления/удаления и извлечение приложения везде, где необходимо:

picture = fields.Binary(compute='_get_picture', inverse='_set_picture') 

Подобных же образом, можно также реализовать совершенно другой механизм хранения, который не полагается на приложения Odoo (например, загружает изображение на файловый сервер и сохраняет ссылку на него в пользовательской таблице/поле для использования методом get).

В вашем случае у вас может быть интерфейс для загрузки изображений для определенных типов клиентов, а таблица customer_type -> image_reference, из которой _get_picture может выбирать и отображать правильное изображение.

Edit: Может быть, хороший подход был бы добавить поле изображений на столе типа клиента, а затем изображение клиента будет просто related поля для type.picture клиента

Или просто приложить картинка к типу клиента и сделайте поле изображения клиента извлечением этого вложения в его методе вычисления

+0

Если я не хочу брать новое поле, то .. –

+1

Используя стандартные вложения, никаких дополнительных полей не требуется, кроме переопределения существующее поле изображения/изображения. – dgeorgiev

+0

Я только что сделал по вашему предложению и это работа. спасибо. –