odoo14(自学)

教程地址:Odoo 14 开发教程_哔哩哔哩_bilibili

菜单

<!--    菜单-->
<!--    parent :指向的菜单路径-->
<!--    action : 指向动作id-->
<menuitem id="estate_property_sec_menu_action"
          sequence="20"
          name="房地产"
          parent="estate_property_menu_action"
          action="estate_property_act_window"/>

搜索

 <!--搜索-->
    <record id="estate_property_search_view" model="ir.ui.view">
        <field name="name">房地产广告</field>
        <field name="model">estate.property</field>
        <field name="arch" type="xml">
            <search>
                <field name="name" string="姓名"/>
                <field name="postcode" string="邮政编码"/>
                <!--domain:将给定域添加到当前搜索-->
                <filter name="搜索" domain="['|',('name','=','碧桂园'),('expected_price','>=','10')]"/>
                <!--context:为当前搜索添加一些上下文;使用键group_by对给定字段名称的结果进行分组-->
                <group string="Group By">
                    <filter name="garden_orientation" string="朝向" context="{'group_by':'garden_orientation'}"/>
                </group>
            </search>
        </field>
    </record>

选择展示/隐藏 optional

<!--打开 列表头右上角 三个点   optional="hide" 默认不展示当前字段 optional="show" 默认展示当前字段-->
<field name="id" string="编号" optional="hide"/>
<field name="name" string="姓名" optional="show"/>

上传头像

# model添加 二进制文件字段类型
    images = fields.Binary(string="头像")
​
# views 添加 上传头像视图
<!--widget 类型为image 图片类型,class 为oe_avatar头像类型-->
<field name="images" widget="image" string="头像" class="oe_avatar"/>

隐藏展示

<!--invisible 可以隐藏显示-->
<field name="expected_price" string="预期价格" invisible="1"/>

排序

1.在model里面设置排序

# 排序 属性名(多个属性用逗号隔开)+排序规则
_order = "id,name desc"
2.在views视图里面设置排序

<kanban default_order="id,name asc">
注意:(视图排序优先级高于model排序)

批量编辑

<!--multi_edit="1" 打开批量修改功能-->
例:<tree multi_edit="1">

打开字段修改记录

# tracking 属性可打开字段修改记录
name = fields.Char(string='姓名', tracking=True)

compute 计算字段

total_area = fields.Float(string="总面积", compute="_compute_total_area")
​
best_price = fields.Float(string="总价格", compute="_compute_best_price")
​
"""
计算房屋总面积
@api.depends(依赖的是谁)
"""
​
@api.depends('living_area', 'garden_area')
def _compute_total_area(self):
    for obj in self:
        obj.total_area = obj.living_area + obj.garden_area
​
@api.depends('offer_ids.price')
def _compute_best_price(self):
    for obj in self:
        best_price = 0.0
        for line in obj.offer_ids:
            best_price += line.price
        obj.best_price = best_price

onchange 装饰器(根据某些字段值改变表单其他数据的机制)

# 默认给定字段的值会修改其他字段的值。使用‘onchange’ 注意(规范) 不要在onchange写复杂逻辑
# 选择花园时花园方向默认选择为北方向 花园区为10
@api.onchange('garden')
def _onchange_garden(self):
    if self.garden:
        self.garden_orientation = 'North'
        self.garden_area = 10
    else:
        self.garden_orientation = None
        self.garden_area = 0

重写 create创建保存方法

# 重写 odoo create创建保存方法
@api.model
def create(self, vals):
    if len(vals.get('name')) != 0:
        vals['random_id'] = uuid.uuid3(uuid.NAMESPACE_DNS, vals.get('name'))
    res = super(EstateProperty, self).create(vals)
    return res

重写name_get方法

# 重写后,在点击Tree视图的内容会,Odoo 会调用 name_get 方法,重写了 name_get方法后 视图上会展示 重写后的数据 
​
def name_get(self):
    result = []
    for x in self:
        name = '[' + x.name + ']' + ' ' + x.postcode
        result.append((x.id, name))
    return result

评论/消息

# model 继承 邮件
_inherit = ['mail.thread', 'mail.activity.mixin']
​
# views添加
<div class="oe_chatter">
    <!--消息关注者-->
    <field name="message_follower_ids" widget="mail_followers"/>
    <!--展示消息记录-->
    <field name="message_ids" widget="mail_thread"/>
    <!--计划活动-->
    <field name="activity_ids"/>
</div>

pdf

<!--pdf-->
<record id="estate_property_print_pdf" model="ir.actions.report">
    <field name="name">打印</field>
    <field name="model">estate.property</field>
    <field name="report_type">qweb-pdf</field>
    <!--        report_name report_file 对应pdf model 视图里面的id -->
    <field name="report_name">estate.estate_property_model_pdf_view</field>
    <field name="report_file">estate.estate_property_model_pdf_view</field>
    <field name="print_report_name">'Print Badge - %s' % (object.name).replace('/', '')</field>
    <field name="binding_model_id" ref="model_estate_property"/>
    <field name="binding_type">report</field>
</record>
​
​
​
​
​
​
​
  <template id="estate_property_model_pdf_view">
        <!--使用基本布局-->
        <t t-call="web.basic_layout">
            <div class="page">
                <t t-foreach="docs" t-as="estate">
                    <div class="col-md-6">
                        <table style="width:243pt; height:153pt; border: 1pt solid black; border-collapse:separate; border-radius:8pt; margin:5pt">
                            <td style="width:33%;" valign="center">
                                <table style="width:77pt; height:150pt">
                                    <tr style="height:30%">
                                        <td align="center" valign="center">
                                        </td>
                                    </tr>
                                    <tr style="height:70%;">
                                        <td align="center" valign="center">
                                            <img t-if="estate.images" t-att-src="image_data_uri(estate.images)"
                                                 style="max-height:85pt;max-width:90%" alt="Employee Image"/>
                                        </td>
                                    </tr>
                                </table>
                            </td>
                            <td style="width:67%" valign="center">
                                <table style="width:155pt; height:85pt">
                                    <tr>
                                        <th>
                                            <div style="font-size:15pt; margin-bottom:0pt;margin-top:0pt;"
                                                 align="center">
                                                <t t-esc="estate.name"/>
                                            </div>
                                        </th>
                                    </tr>
                                </table>
                            </td>
                        </table>
                    </div>
                </t>
            </div>
        </t>
    </template>

持续更新。。。。。

自学项目地址:

https://gitee.com/xfodoo/xf-odoo-14

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值