Xodoo第十二节

属性"_auto = False"

决定是否创建数据库表(默认值为 True)。如果设置为 False,则需要重写 init()函数来创建表。

class HostelRoomAvailability(models.Model):
    _name = 'hostel.room.availability'
    _auto = False

    room_id = fields.Many2one('hostel.room', 'Room', readonly=True)
    student_per_room = fields.Integer(string="Student Per Rooom", readonly=True)
    availability = fields.Integer(string="Availability", readonly=True)
    amount = fields.Integer(string="Amount", readonly=True)

    def init(self):
        tools.drop_view_if_exists(self.env.cr, self._table)
        query = """
        CREATE OR REPLACE VIEW hostel_room_availability AS (
        SELECT
                min(h_room.id) as id,
                h_room.id as room_id,
                h_room.student_per_room as student_per_room,
                h_room.availability as availability,
                h_room.rent_amount as amount
            FROM
                hostel_room AS h_room
            GROUP BY h_room.id
        );
        """
        self.env.cr.execute(query)

 

pivot透视图

属性:

        type="measure" : 主要是用来统计数据的总数;

        type="row" : 主要用来设置横向列;

        type="col"  主要用来设置纵向列;

    <record id='hostel_room_availability_action' model='ir.actions.act_window'>
        <field name="name">Hostel Room Availability</field>
        <field name="res_model">hostel.room.availability</field>
        <field name="view_mode">pivot</field>
    </record>

    <record id="hostel_room_availability_view_pivot" model="ir.ui.view">
        <field name="name">hostel.room.availability.pivot</field>
        <field name="model">hostel.room.availability</field>
        <field name="arch" type="xml">
            <pivot string="Availability Analysis" disable_linking="True">
                <field name="room_id" type="row"/>
                <field name="student_per_room" type="measure"/>
                <field name="availability" type="measure"/>
                <field name="amount" type="measure"/>
            </pivot>
        </field>
    </record>

 

视图继承

<record id="res_config_settings_view_form" model="ir.ui.view">
        <field name="name">res.config.settings.view.form.inherit.hostel</field>
        <field name="model">res.config.settings</field>
        <field name="priority" eval="5"/>
        <field name="inherit_id" ref="base.res_config_settings_view_form"/>
        <field name="arch" type="xml">
            <xpath expr="//form" position="inside">
                <div class="app_settings_block" data-string="Hostel" string="Hostel" data-key="my_hostel" groups="my_hostel.group_hostel_manager">
                    <h2>Hostel</h2>
                    <div class="row mt16 o_settings_container">
                        <div class="col-12 col-lg-6 o_setting_box" id="hostel">
                            <div class="o_setting_left_pane">
                                <field name="group_hostel_user"/>
                            </div>
                            <div class="o_setting_right_pane">
                                <label for="group_hostel_user"/>
                                <div class="text-muted">
                                    Allow users to hostel user
                                </div>
                            </div>
                        </div>
                    </div>
                </div>
            </xpath>
        </field>
    </record>

arch必须是xml,在这里面就可以写具体的视图了

使用xpath定位元素

注意找到的元素必须是一个,如果定位出多个元素或者是空,会报错

expr 用来选择父视图中的某个元素,如果没找到或找到多个元素会抛出一个异常

position属性

1、inside 在内部结尾插入元素

2、replace 替换元素

3、before 在之前插入元素

4、after 在其后插入元素

5、attributes 修改xml的属性

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

DTCloud4

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值