odoo - 如何根据两个不同的字段获取一个字段的值
问题描述
所以我创建了一个酒店管理模块。我可以选择根据 bed_type 和 tag 过滤房间。标签包含不同的设施,如空调、电视等。所以用户会来选择一种床型和他想要的设施,在第三个字段中,它应该显示具有给定配置的房间,如果不可用,则应该出现错误消息。所以我创建了一个 onchange 函数来做到这一点,但我不知道如何在其中包含标签。我在odoo v14上做。米
这是房间的模型
from odoo import api, fields, models, _
class HotelRoom(models.Model):
_name = 'hotel.room'
_description = 'hotel room'
_rec_name = 'room_number'
room_number = fields.Char('Room Number', required=True)
room_rent = fields.Monetary('Room Rent')
tag = fields.Many2many('hotel.tags', string='Facilities')
dormitory_count = fields.Integer('Dormitory count')
bed_type = fields.Selection([
('single', 'Single'),
('double', 'Double'),
('dormitory', 'Dormitory')
], required=True, default='other')
这是接待的模型
class HotelAccommodation(models.Model):
_name = 'accommodation.room'
_description = 'Reception'
bed_type = fields.Selection([
('single', 'Single'),
('double', 'Double'),
('dormitory', 'Dormitory')
], required=True, string= 'Bed type')
state = fields.Selection([
('draft','Draft'),
('check-in','Check-In'),
('check-out', "Check-Out"),
('cancel','Cancel'),
], required=True, default='draft', tracking=True)
tag = fields.Many2many('hotel.tags', string='Facilities')
room_id = fields.Many2one('hotel.room', string='Room')
使用它,我可以根据 bed_type 过滤房间,但我也需要标签。我尝试在域内提供它,但它不起作用。
@api.onchange('bed_type')
def filter_room(self):
for rec in self:
return {'domain': {'room_id': [('bed_type', '=', rec.bed_type)]}}
解决方案
您可以将 _compute 字段与 store 选项一起使用 = True
看看https://www.odoo.com/documentation/14.0/reference/orm.html#computed-fields
推荐阅读
- python - 打印文件中的行直到行空白行
- r - 为什么我得到估计标准。当我使用的数据永远不会是负数时是否为负数?
- sql-server - @Procedure 给出运行时错误 java.lang.IllegalArgumentException: Type cannot be null
- python - 编写 Django post_save 信号配置的正确方法
- c# - C# 数组仅将第一个数组项重复到 excel 字段中
- jquery - 在正确的 span 中呈现由 ajax 请求获取的数据
- python - 为什么这个布尔表达式的计算结果为 False?
- powershell - 使用 Powershell 搜索和删除包含字符串的注册表值
- python - 使用 mariaDB python 更新数据库
- php - 将具有不同值的多个复选框插入相应的数据库列