Сообщение #1
11 августа 2015, 23:10
|
Вопросы по моделям
Здравствуйте!
1. Как получить количество дочерних объектов?
Примечание:
— 1 млн записей в таблице fav.orders
— 500 тыс. записей в таблице fav.clients
—
После двух дней кое-чего, что не пропустит цензура, у меня вышла такая вот модель:
В ответ мне прилетает:
1. Как получить количество дочерних объектов?
Примечание:
— 1 млн записей в таблице fav.orders
— 500 тыс. записей в таблице fav.clients
—
<!-- C L I E N T S !-->
<record id="view_clients_tree" model="ir.ui.view">
<field name="name">fav.clients.tree</field>
<field name="model">fav.clients</field>
<field name="arch" type="xml">
<tree string="Clients">
<field name="name"/>
<field name="user"/>
<field name="sell_cart"/>
<field name="orders_sum"/>
<field name="aver_cost"/>
<field name="tickets_num"/>
<field name="orders_num"/>
<field name="status"/>
</tree>
</field>
</record>
После двух дней кое-чего, что не пропустит цензура, у меня вышла такая вот модель:
class fav_clients(osv.Model):
def calculate_orders_sum(self,cr,uid,ids,field_name,arg,context):
res={}
for item in self.browse(cr,uid,ids,context):
res[id] = len(item.orders) if item.orders else 0
return res
_name = 'fav.clients'
_columns = {
'name': fields.char('Name', required=True),
'user': fields.many2one('res.users', 'Manager', default=lambda self: self.env.user),
'phone': fields.char('Phone'),
'email': fields.char('E-mail'),
'sell_cart': fields.char('Sell cart No'),
'comments': fields.text('Comments'),
'orders_sum': fields.function(calculate_orders_sum,
type="integer",
string='The sum of all orders',
method=True,
readonly=True),
'tickets_num': fields.integer('The number of tickets', readonly=True),
'orders_num': fields.integer('The number of orders', readonly=True),
'aver_cost': fields.integer('Average ticket prices', readonly=True),
'orders': fields.one2many('fav.orders', 'client', 'Orders'),
'status': fields.selection(selection=[('normal', 'Normal'),
('no_calls', 'No longer calls'),
('impossible', 'Impossible')], string='Status')
}
В ответ мне прилетает:
Odoo Server Error
Traceback (most recent call last):
File "C:\Program Files (x86)\Odoo 8.0-20150506\server\.\openerp\http.py", line 530, in _handle_exception
File "C:\Program Files (x86)\Odoo 8.0-20150506\server\.\openerp\http.py", line 567, in dispatch
File "C:\Program Files (x86)\Odoo 8.0-20150506\server\.\openerp\http.py", line 303, in _call_function
File "C:\Program Files (x86)\Odoo 8.0-20150506\server\.\openerp\service\model.py", line 113, in wrapper
File "C:\Program Files (x86)\Odoo 8.0-20150506\server\.\openerp\http.py", line 300, in checked_call
File "C:\Program Files (x86)\Odoo 8.0-20150506\server\.\openerp\http.py", line 796, in __call__
File "C:\Program Files (x86)\Odoo 8.0-20150506\server\.\openerp\http.py", line 396, in response_wrap
File "C:\Program Files (x86)\Odoo 8.0-20150506\server\openerp\addons\web\controllers\main.py", line 876, in search_read
File "C:\Program Files (x86)\Odoo 8.0-20150506\server\openerp\addons\web\controllers\main.py", line 897, in do_search_read
File "C:\Program Files (x86)\Odoo 8.0-20150506\server\.\openerp\http.py", line 900, in proxy
File "C:\Program Files (x86)\Odoo 8.0-20150506\server\.\openerp\api.py", line 241, in wrapper
File "C:\Program Files (x86)\Odoo 8.0-20150506\server\.\openerp\models.py", line 5135, in search_read
File "C:\Program Files (x86)\Odoo 8.0-20150506\server\.\openerp\api.py", line 241, in wrapper
File "C:\Program Files (x86)\Odoo 8.0-20150506\server\.\openerp\models.py", line 3133, in read
File "C:\Program Files (x86)\Odoo 8.0-20150506\server\.\openerp\api.py", line 239, in wrapper
File "C:\Program Files (x86)\Odoo 8.0-20150506\server\.\openerp\models.py", line 3168, in read
File "C:\Program Files (x86)\Odoo 8.0-20150506\server\.\openerp\api.py", line 239, in wrapper
File "C:\Program Files (x86)\Odoo 8.0-20150506\server\.\openerp\models.py", line 3349, in _read_from_database
KeyError: 1
Последний раз редактировал пользователь
Siyet
-
11 августа 2015, 23:16