@阿巴阿巴
补充里有一点说错了,“设置→技术→自动化→安排的动作”应该是“设置→技术→顺序号与标识号→顺序号”的。
阿巴阿巴
-
odoo自动生成日期序号 -
odoo自动生成日期序号如下代码所示:创建的序号是XH-20220119-001,XH-20220119-002,但是在第二天的时候,序号是XH-20220120-003。我希望在每个新的一天中,序号能从001开始,即XH-20220120-001,而不是接着上一天的。不知道需要怎么做,希望得到大家的回答,谢谢!
class ModelA(models.Model): """...""" code = fields.Char(string='序号', readonly=True, default=lambda x: '自动生成') # 自动生成一个编号,ir.sequence模型在 data/sequence.xml中 @api.model def create(self, vals): if not vals.get('code') or vals.get('code') == '自动生成': vals['code'] = self.env['ir.sequence'].next_by_code('model_A_code') return super(ModelA, self).create(vals)
<?xml version="1.0" encoding="UTF-8" ?> <odoo> <data> <!-- 生成单据编号 --> <record id="model_A_code" model="ir.sequence"> <field name="name">序号</field> <field name="code">model_A_code</field> <field name="prefix">XH-%(year)s%(month)s%(day)s-</field> <field name="padding">3</field> <field name="use_date_range">True</field> <field name="date_range_ids" eval="[(0,0,{'date_from':datetime.today(),'date_to':datetime.today(),'number_next':1})]"/> </record> </data> </odoo>
补充:这个代码是我根据ir.sequence模型和设置→技术→自动化→安排的动作进行编写的,不确定它能否每天更新。
<field name="date_range_ids" eval="[(0,0,{'date_from':datetime.today(),'date_to':datetime.today(),'number_next':1})]"/>
-
odoo 在pycharm终端没有日志输出@digitalsatori
odoo.conf文件没有设置log文件。
问题已解决,我试着没有运行程序,但是odoo依旧能用,怀疑是电脑有多个服务,选择开机重启,解决了问题。 -
odoo 在pycharm终端没有日志输出如下图,在启动服务后,在odoo界面进行任何操作,pycharm终端这里都没有日志显示。在这之前是每个操作都是有日志记录的。
求助,感谢大家。 -
odoo外部页面,地图我有一个表单,里面有地址A,引入了地图页面,搜索框是B,搜索后的选择是C。如图:
我的问题是:想要在B输入搜索,在C中选择具体的某一个地址后,A中能得到C的地址。但是不知道怎么从C取得值,以及赋值给A。 -
关于同一个视图里,不同用户组对同一个字段的不同控制@保定_粉刷匠 谢谢,已搞定。
-
关于同一个视图里,不同用户组对同一个字段的不同控制在一个表单内,不同的用户组对于同一个字段,实现只读或者编辑。没有想到怎么做,求教?
-
关于继承partner视图无法隐藏email的问题@digitalsatori
问题一:
通过您的办法解决了我的问题,非常感谢!
同时我也发现,在“编辑视图:表单”里没办法看到这个视图被继承后的属性,但是通过“字段视图获取”,能看到继承的属性。
下图是找到了label属性的:
问题二:
我的版本是odoo13,我仍然没有发现page里有name属性,通过查找//page[@autofocus='autofocus']来定位到这个页进行隐藏的。此外,我有个新问题,关于多个查找路径的,我的代码如下:
<xpath expr="//page[@autofocus='autofocus'] | //page[@name='sales_purchases'] | //page[@name='internal_notes']" position="attributes"> <attribute name="invisible">1</attribute> </xpath>
这段代码并没有按照预期进行三个页面的隐藏,实际效果是只隐藏了第一个页面。请问这个原因是什么?假如我要隐藏多个页面,有没有简洁的写法,而不是每个页面写一个查找?
-
关于继承partner视图无法隐藏email的问题目前需要继承partner的表单视图,外部ID是base.view_partner_form。
问题一:
我能够成功隐藏其它字段,但是不能隐藏email,<xpath expr="//field[@name='email']" position="attributes"> <attribute name="invisible">1</attribute> </xpath>
使用以上的代码,实际出现的界面如下图1:
图1它只隐藏了email的输入框,但是没有完全隐藏email整个字段,看了这个视图的源代码(如下图2),没有发现其它阻碍隐藏的属性。那为什么隐藏会没有成功呢?希望得到解答或帮助。
图2问题二:
此外,在图1中,page联系人&地址没有name属性,无法通过以下代码进行隐藏。想询问可以有其它方法能够隐藏这个吗?<xpath expr="//page[@name='']" position="attributes"> <attribute name="invisible">1</attribute> </xpath>
-
关于many2one的domain问题@digitalsatori 谢谢您的回答,解决了困惑我几周的问题。
另外想询问您关于“onchange方法会逐渐被compute方法所取代”的疑问:在我学习到的知识里,compute与@api.depends()是联动的,在监听到值改变后,用于实时计算值,是否我忽略了其它东西? -
关于many2one的domain问题@leuan 你好,我使用的是onchange,但是onchange需要在字段国家改变值后才能响应函数,我在第二次进入记录进行编辑时,并没有改变国家的值,而是在第一次编辑后的国家的值下,进行选择省的值,这个时候会出现所有的省和地区,并没有进行筛选。
-
关于many2one的domain问题有两个many2one字段,类似于省市的两级联动,如下:
province_id = fields.Many2one('模型1', string='省') city_id = fields.Many2one('模型2', string='市')
目前的需求是根据省province_id的值,动态筛选市city_id显示的值。
根据网上的说法,我用了以下onchange函数@api.onchange('province_id') def _onchange_city(self): # 取对应的省的值 province_value = self.province_id .province # 将取到的值跟模型2中市对应的省值进行比较匹配 area_id_list = [] for record in self.env['模型2'].search([('city_id.省的值', '=', province_value)]).ids: area_id_list.append(record) # 用列表中的id去筛选,符合的留下 domain = {'city_id ': [('id', 'in', area_id_list)]} return {'domain': domain}
最后得出来的效果跟odoo13中公司的国家和省的字段选择是一样的,如图:
但是出现了一个问题:在第一次编辑时选择了国家--“中国”,然后退出此记录再进去编辑时,省的选择会变成全部而不是在属于中国的省里进行筛选,如图:
想要询问的是,有没有办法在第二次进入以后,省的选择能通过国家的字段值进行筛选后显示,或者有类似的解决办法。
非常感谢大家!