如何将结果fetchall填充到列中?

时间:2012-09-08 02:14:20

标签: openerp

我使用了命令fetchall()

cr.execute('select a.name, a.state, a.amount_total, a.date_confirm, b.product_uom_qty from sale_order a, sale_order_line b where a.id = b.order_id')
temp = cr.fetchall()

因此它需要表SO中的所有SO,并且我希望将所有结果填入此处:

class sales_items_line(osv.osv_memory):
_name = "sales.items.line"
_description = "Sales Items Line"
_columns = {
    'name': fields.char('Name', size=64),
    'qty': fields.char('Quantity', size=64),
    'date': fields.date('Date', required=True),
    'amount': fields.float('Amount', digits_compute=dp.get_precision('Account')),
    'draft_assigned': fields.boolean('Select'),
    'sale_items_id': fields.many2one('add.sales.items', 'Deposit Items ID'),
}
但是怎么样?请帮帮我......,cr.execute是不同的类

1 个答案:

答案 0 :(得分:3)

你必须覆盖default_get()方法并填充你的列。
这是代码:

def default_get(self, cr, uid, fields, context=None):
    fields = super(sales_items_line, self).default_get(cr, uid, fields, context=context)
    cr.execute('select a.name as "name", a.state as "state", a.amount_total as "total", a.date_confirm as "date", b.product_uom_qty as "qty" from sale_order a, sale_order_line b where a.id = b.order_id')
    data = cr.dictfetchall()
    for rec in data:
        fields['name'] = rec.get('name', '')
        fields['qty'] = rec.get('qty', 0.00)
        fields['amount'] = rec.get('total', 0.00)
    return data

希望这能解决您的问题。
谢谢。