odoo15,fields.Date(string='My Date Field', date_format='%Y-%m-%d') 这行代码有误, date_format不存在
时间: 2023-11-26 09:04:05 浏览: 177
您是正确的,`date_format`参数在Odoo中的`fields.Date`字段定义中是不存在的。如果您想设置日期格式,可以在视图中使用`widget`参数来指定日期控件的格式,例如:
```
<field name="my_date_field" widget="date" options="{'datepicker': {'format': 'yyyy-mm-dd'}}"/>
```
这将在视图中呈现一个日期控件,其格式为`yyyy-mm-dd`。请注意,这只适用于视图中的控件,而不是字段定义中的参数。
相关问题
<?xml version="1.0" encoding="UTF-8" ?> <odoo> <record model="ir.ui.view" id="hear_tree_view"> <field name="name">hear_hear</field> <field name="model">hear_hear</field> <field name="arch" type="xml"> <tree> <field name="name"/> <field name="notes"/> <field name="flag"/> <field name="nums"/> <field name="money"/> <field name="now"/> <field name="time"/> <field name="amy"/> <field name="page"/> <field name="gender"/> <field name="active"/> </tree> </field> </record> </odoo>from odoo import api, fields, models class Hear(models.Model): _name = "hear.hear" name = fields.Char(string='叫什么') notes = fields.Text(string='笔记') flag = fields.Boolean(string='买不买', default=True) nums = fields.Integer(string='售价', size=40) money = fields.Float(string='总价', compute="_compute_rate") now = fields.Date(string='时间') time = fields.Datetime(string='日期') amy = fields.Binary(string='上传文件', store=False) page = fields.Html(string='代码') gender = fields.Selection([('1', '男人'), ('2', '女人'), ('3', '人妖')], default='1') active = fields.Boolean(default=True) @api.depends('nums') def _compute_rate(self): self.money = self.nums * 30我已经写好了模型和视图并在odoo中进行了模块的安装,但是在菜单列表看不到
您需要在模块的`__manifest__.py`文件中添加菜单项,以便在odoo中显示该模块的菜单。您可以添加类似以下代码的内容:
```
'menuitems': [
{'name': 'Hear', 'sequence': 1, 'action': 'action_hear_tree_view', 'parent_id': 'base.menu_sales'},
],
```
其中,`Hear`是菜单名称,`action_hear_tree_view`是视图的名称,`base.menu_sales`是父菜单的id,可以根据您的实际需求进行修改。添加完毕后,您需要重新安装并更新该模块才能看到菜单项。
class ApprovalFlow(models.Model): _name = 'approval.flow' _description = u'审批流程' def _compute_domain(self): all_cls = inspect.getmembers(sys.modules[__name__], inspect.isclass) odoo_cls = [getattr(cls[1], '_name') for cls in all_cls if cls[1].__bases__[0].__name__ == 'Model'] # 排除当前的对象 odoo_cls += [model.model for model in self.env['ir.model'].search([('transient', '=', True)])] # 排除临时对象 return [('model', 'not in', odoo_cls)] name = fields.Char(u'名称') model_id = fields.Many2one('ir.model', u'模型', domain=_compute_domain, index=1) model_name = fields.Char(related="model_id.model", string='模型名称') condition = fields.Char(u'条件', help=u'请遵循odoo的domain的写法,如:[("field_name", "=", value)]',store=True) class RokedispatchordermanagementPriceApprove(models.Model): _name = 'roke.dispatch.order.management.price.approve' _inherit = ['mail.thread', 'mail.activity.mixin'] _description = "派船单应付审核" _rec_name = "code" order_id = fields.Many2one('roke.dispatch.order.management', string='派船单', ondelete='cascade') code = fields.Char(string='单据编号', store=True, related='order_id.code') class Rokedispatchordermanagement(models.Model): _name = 'roke.dispatch.order.management' _inherit = ['mail.thread', 'mail.activity.mixin'] _description = "派船单" _rec_name = "code" client = fields.Many2one('roke.partner', string='客户', tracking=True, required=True,) department_manager = fields.Many2one('res.users', string='创建人', tracking=True, default=lambda self: self.env.user.id) box_number = fields.Char(string='箱号') shipping_companies = fields.Char(string='船公司') field_station = fields.Char(string='场站') ship_name_voyage = fields.Char(string='船名航次') port_of_discharge = fields.Char(string='卸货港') box_type = fields.Many2one('roke.box.type', string='箱型') code = fields.Char(string='单据编号', track_visibility='onchange') 派传单应付审核表提交审核在审批流程的条件里面有记录同时如果选择完成之后不能删除派船单这条审批通过的不能删除要重新写删除方法怎么写
首先,在 ApprovalFlow 类中的 _compute_domain 方法中,通过 inspect.getmembers 方法获取当前模块中所有的类,然后筛选出继承自 Model 类的类,并将其对应的模型名存储在 odoo_cls 列表中。同时,通过查询 ir.model 模型获取所有的临时对象,并将其对应的模型名也存储在 odoo_cls 列表中。最后,将所有不在 odoo_cls 列表中的模型名作为 domain 返回,以在创建 ApprovalFlow 对象时限制模型选择范围。
其次,在 RokedispatchordermanagementPriceApprove 类中,使用了 _inherit 属性继承了 mail.thread 和 mail.activity.mixin 两个类,使得该模型具有邮件和活动的功能。同时,该模型关联了 Rokedispatchordermanagement 模型,并且定义了一个 code 字段,用于存储派船单的单据编号。
最后,在 Rokedispatchordermanagement 类中,定义了派船单的各个字段,其中包括一个 code 字段用于存储单据编号。如果要在审批通过后禁止删除,可以在 RokedispatchordermanagementPriceApprove 类中重载 unlink 方法,在其中判断当前记录是否已经通过审批,如果通过审批则不允许删除,否则可以删除。代码示例如下:
```python
class RokedispatchordermanagementPriceApprove(models.Model):
...
def unlink(self):
for rec in self:
if rec.state == 'approved':
raise UserError("已通过审批的记录不能删除!")
return super(RokedispatchordermanagementPriceApprove, self).unlink()
```
需要注意的是,在上述代码中,假设该模型有一个 state 字段用于记录当前记录的状态,当 state 等于 approved 时表示已经通过审批。如果没有 state 字段,需要根据实际情况进行修改。另外,如果其他模型也需要在审批通过后禁止删除,可以类似地在对应的模型中重载 unlink 方法。
阅读全文