[英]Get sum of other model field base on condition
I want to the get the sum of the total field of ru.invoice
to be displayed on ru.students
if the name field of ru.students
is equal to student_id
of ru.invoice
. 我想将得到的总场的总和
ru.invoice
上显示ru.students
如果name字段ru.students
等于student_id
的ru.invoice
。
I used the browse
method but it does not work. 我使用了
browse
方法,但是它不起作用。
class ru_students(models.Model):
_name = 'ru.students'
_rec_name = 'code'
def _get_total(self, cr, uid, ids, context=None):
pool_re = self.pool.get('ru.invoice')
pool_rec = pool_re.browse(cr, uid, ids, [('name','=','student_id')],
context=context)
for field in self:
for line in pool_rec:
x = 0.0
x += line.total
field.payed += x
name = fields.Char(string="Name")
payed = fields.Float(compute="_get_total")
class ru_invoice(models.Model):
_name = 'ru.invoice'
_rec_name = 'code'
@api.multi
@api.depends('qty','unit_price')
def get_total(self):
for rec in self:
x = 0.0
x = rec.qty * rec.unit_price
rec.total = x
student_id = fields.Many2one('ru.students','Student ID")
qty = fields.Float(string="Quantity")
unit_price = fields.Float(string="Unit Price")
total = fields.Float(compute="_get_totals",string="Total")
First of all, be careful don't mix API7 code with API8 code, use always API8 code if you can (besides, it's going to be much easier for you to use API8). 首先,请注意不要将API7代码与API8代码混合使用,请尽可能使用API8代码(此外,使用API8会容易得多)。 I think you want this on your field
payed
(check the class ru_invoice
too because I corrected some things there - example: in total
field you had written _get_totals
in compute
when you wanted to call _get_total
-). 我认为您希望在您的字段上
payed
(也请检查ru_invoice
类,因为我在那里更正了一些内容- 例如:在total
字段中,当您想调用_get_total
时,您已经在compute
编写了_get_totals
)。
class ru_students(models.Model):
_name = 'ru.students'
_rec_name = 'code'
@api.multi
@api.depends('invoices')
def _get_total(self):
for student in self:
student.payed = sum(
invoice.total for invoice in student.invoices)
name = fields.Char(string='Name')
payed = fields.Float(compute='_get_total', string='Payed')
invoices = fields.One2many(comodel_name='ru.invoice',
inverse_name='student_id',
string='Invoices of the student')
class ru_invoice(models.Model):
_name = 'ru.invoice'
_rec_name = 'code'
@api.multi
@api.depends('qty', 'unit_price')
def _get_total(self):
for invoice in self:
invoice.total = invoice.qty * invoice.unit_price
student_id = fields.Many2one(comodel_name='ru.students',
string='Student ID')
qty = fields.Float(string='Quantity')
unit_price = fields.Float(string='Unit Price')
total = fields.Float(compute='_get_total', string='Total')
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.