Bỏ qua để đến Nội dung
Menu
Câu hỏi này đã bị gắn cờ
3 Trả lời
6947 Lượt xem

How to dynamically add new fields to a osv model depending on the number of records of another osv model in openerp? For example I have a model which is for planning purchases. I need to show total order qty that came in each shop.so i need to add new field each time a new record in sale.shop is created.

Ảnh đại diện
Huỷ bỏ
Tác giả Câu trả lời hay nhất

Use __init__ function of your class to dynamically add the sales shop to _columns.

class planning(osv.osv):
    def __init__(self, pool, cr):
        shop_ids = pool.get('sale.shop').search(cr,SUPERUSER_ID,[])
        for shop in pool.get('sale.shop').browse(cr, SUPERUSER_ID,shop_ids):
            self._columns['shop_qty_%s'%shop.id] = fields.float(
                                                                '%s Order Qty'%shop.name)
        return super(planning,self).__init__(pool, cr)
Ảnh đại diện
Huỷ bỏ
Câu trả lời hay nhất

This is impossible with the current osv model. And it is bad software design.

Better, add a new model: purchase_shop_quantity and make a one2many relation from your current model to the new one

Ảnh đại diện
Huỷ bỏ
Câu trả lời hay nhất
Ảnh đại diện
Huỷ bỏ
Bài viết liên quan Trả lời Lượt xem Hoạt động
3
thg 5 21
3277
0
thg 5 24
1730
0
thg 10 24
1263
2
thg 9 21
22565
0
thg 12 15
6380