例如,我有一个one2many字段,其中包含3个带有2个不同值的字段。 假设区域是一个one2many字段
A区=汽车= 3000,自行车= 2000。
B区=汽车= 2500,自行车= 1500。
C区=汽车= 2000,自行车= 1000。
然后我有很多字段供以后选择的字段(例如汽车和自行车)
和rate_fields作为计算的触发字段(以后存储值的地方)
关键是我要选择“ A”区域,然后在many2one字段中选择“ Car”
rate字段的输出为3000
,如果我选择区域“ B”,则选择“自行车” 费率字段的输出为1500
如果用代码编写,则该实现将使用具有域语法“多个条件”的按域过滤。 有人可以帮我做一个示例代码吗?
也许这是参考,但我无法编写适当的代码
多种条件
在编程中
如果a = 5或(b!= 10且c = 12)
在Open ERP域过滤器中
['|',('a','=',5),('&',('b','!=',10),('c','=',12)) ]
https://stackoverflow.com/a/19070664/9228786
提前谢谢
答案 0 :(得分:0)
我引用了your other question以获得更多详细信息,但是您的问题都令人困惑。据我了解,您的目标是选择一个区域,然后选择一种车辆类型。根据您的选择,您想要查看费率。
无论您想进行哪种模型计算,都需要一个字段来选择区域,一个字段来选择车辆类型以及一个字段来存储费率。
您其他问题的课程有点混乱,所以这是我的建议。
您需要一个模型来跟踪(1)位置/区域,(2)车辆类型,(3)每个位置/区域对每种车辆类型收取的费率,以及(4)一个模型来计算给定位置/区域上的给定车辆类型。
class ParkingLocation(models.Model):
_name = 'parking.location'
_description = 'Parking Zones'
name = fields.Char(string='Name')
class VehicleType(models.Model):
_name = 'vehicle.type'
_description = 'Types of Vehicles'
name = fields.Char(string='Name')
class ZoneRate(models.Model):
_name = 'zone.rate'
_description = 'Define the rate for each Vehicle Type in each Zone'
location_id = fields.Many2one('parking.location', string='Location', required='True')
vehicle_type_id = fields.Many2one('vehicle.type', string='Vehicle Type')
rate = fields.Float('Rate')
class ZoneRateLookup(models.Model):
_name = 'zone.rate.lookup'
_description = 'Calculate the rate for the chosen Zone and Vehicle Type'
location_id = fields.Many2one('parking.location', string='Location', required='True')
vehicle_type_id = fields.Many2one('vehicle.type', string='Vehicle Type')
rate = fields.Float('Rate', compute='_compute_rate', store=True, readonly=True)
@api.multi
@api.depends('location_id', 'vehicle_type_id')
def _compute_rate(self):
rate_lookup_obj = self.env['zone.rate.lookup']
for zone_rate in self:
rate = rate_lookup_obj.search([('location_id', '=', zone_rate.location_id.id),
('vehicle_type_id', '=', zone_rate.vehicle_type_id.id)])
if not rate:
raise ValidationError(_('No Rate found for that Vehicle Type in that Zone!')
zone_rate.rate = rate.rate