Guide to implement the hotel.roomtypes model for Exercise 5 - managing room categories like Deluxe, Standard, Suite.
This skill guides you through implementing the hotel.roomtypes model.
Room Types categorize rooms (e.g., "Deluxe", "Standard", "Suite") with pricing and image data.
Create addons/hotel/models/roomtypes.py:
# -*- coding: utf-8 -*-
from odoo import models, fields
class RoomTypes(models.Model):
_name = 'hotel.roomtypes'
_description = 'Hotel Room Types'
_order = 'name'
name = fields.Char("Room Type", required=True)
description = fields.Text("Description")
room_photo = fields.Binary("Room Photo")
bathroom_photo = fields.Binary("Bathroom Photo")
# One2many to rooms (Exercise 11)
room_ids = fields.One2many('hotel.rooms', 'roomtype_id', string="Rooms")
# One2many to daily charges (Exercise 10)
dailycharge_ids = fields.One2many('hotel.dailycharges', 'roomtype_id', string="Daily Charges")
Edit addons/hotel/models/__init__.py:
from . import charges
from . import roomtypes
Create addons/hotel/views/roomtypes.xml:
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<record id="view_hotel_roomtypes_list" model="ir.ui.view">
<field name="name">hotel.roomtypes.list</field>
<field name="model">hotel.roomtypes</field>
<field name="arch" type="xml">
<list string="Room Types">
<field name="name"/>
<field name="description"/>
</list>
</field>
</record>
<record id="view_hotel_roomtypes_form" model="ir.ui.view">
<field name="name">hotel.roomtypes.form</field>
<field name="model">hotel.roomtypes</field>
<field name="arch" type="xml">
<form string="Room Type">
<sheet>
<group>
<field name="name"/>
<field name="description"/>
</group>
<notebook>
<page string="Images">
<group>
<field name="room_photo" widget="image"/>
<field name="bathroom_photo" widget="image"/>
</group>
</page>
</notebook>
</sheet>
</form>
</field>
</record>
<record id="action_hotel_roomtypes" model="ir.actions.act_window">
<field name="name">Room Types</field>
<field name="res_model">hotel.roomtypes</field>
<field name="view_mode">list,form</field>
</record>
<menuitem id="menu_hotel_roomtypes"
name="Room Types"
parent="hotel.menu_hotel_masterlists"
action="action_hotel_roomtypes"/>
</odoo>
Add to security/ir.model.access.csv:
access_hotel_roomtypes,hotel.roomtypes,model_hotel_roomtypes,base.group_user,1,1,1,1
Add to __manifest__.py data list:
'views/roomtypes.xml',
# Restart with module update
python odoo-19/odoo-bin -c config/odoo.conf -u hotel