Group Details Private

administrators

Member List

  • RE: 自动创建数据明细并可修改

    有两个办法。一个是让button_auto返回当前记录的一个windows action,相当于将当前记录刷新显示:

    def button_auto(self):
            self.line_ids = self.env['wizard.line'].create([{'wizard_id': self.id, 'sequence': 11, 'no': '123456' },{'wizard_id': self.id, 'sequence': 11, 'no': '123457' } ])
            return {
             'type': 'ir.actions.act_window',
             'name': _('Auto'),
             'res_model': 'wizard',
             'res_id': self.id,
             'view_mode' : 'form',
             'target': 'current'}
    

    另外一个方法是,实际上是要解决这个问题的根本。点击button_auto不能显示明细的原因是: Odoo认为WizardLine已经存在,所以用(1, id, values)来更新WizardLine的记录,但是Wizard的create方法是不接受(1,id,values)这种格式来更新Many端的记录的,我们可以敷写create方法, 改用(4,id, False)来关联wizard line到wizard上即可:

        @api.model
        def create(self, vals):
            line_ids = vals.get('line_ids', False)
            if line_ids:
                for line in line_ids:
                    line[0] = 4
                    line[2] = False
                vals.update({'line_ids': line_ids})
            return super(Wizard, self).create(vals)   
    
    posted in Odoo 新手求助
  • RE: 自动创建数据明细并可修改

    在wizard中可成功创建wizard_line,但是列表中并不会显示

    在哪个列表里不显示

    posted in Odoo 新手求助
  • Odoo的异步队列神器-queue_job

    当我们导入/导出一个很大的文件时,打印一个年度的财务明细报表时,或者执行一个需要长时间计算的任务时,我们的Odoo界面就被锁死的状态,一会儿让我们喝咖啡,一会儿请我们吃大餐,而且最后很可能超时跑飞,不了了之。
    这时,queue_job这个工具就派用场了。它可以将需要执行的代码作为延时任务放到队列里,从而不会阻断当前的操作。同时可以设定多个channel 和runner,在队列里的任务就可以被多个runner并发执行,大大提高了运行效率。
    而使用queue_job的语法非常简单,比如我们的模型my.model里有一个heavy_method需要异步执行,我们只要用job装饰器装饰这个方法:

    from odoo import models, fields, api
    from odoo.addons.queue_job.job import job
    
    class MyModel(models.Model):
       _name = 'my.model'
    
       @job
       def heavy_method(self, a, k=None):
           _logger.info('executed with a: %s and k: %s', a, k)
    

    然后在调用这个方法时先执行with_delay方法,比如:

        ...
        def action_heavy_button(self):
            self.with_delay().heavy_method('a', 2)
    
    posted in Odoo 培训
  • RE: odoo的数据库如何迁移

    你可以用pg_dump把数据备份导出,然后用pg_restore工具恢复到新的数据库。
    这只是恢复了数据库的数据,如果Odoo的应用服务器也会迁移到另外的服务器上,你还需要迁移filestore数据,Linux下的默认文件夹位置是~/.local/share/Odoo/filestore

    如果数据量不大,你可以用Odoo的界面工具来备份/恢复数据,URL是:serverURL/web/database/manager

    如果迁移后数据库和Odoo应用服务器不处于同一服务器,你还要考虑PostgreSQL数据库的安全访问策略:设置在postgreSQL的pg_hba.conf中设置,具体请搜索。

    祝迁移顺利!

    posted in Odoo 开发与实施交流
  • RE: 想学python但是网上的教程太乱了,有前辈整理出来的吗?

    推荐一本Python参考书吧:David M. Beazley 的 “Python Essential Reference” 是一本好书。不知道有没有中文版,不知道中文版的翻译是否又毁了一本好书。

    posted in Python 开发
  • Odoo对临近保质期的产品如何提醒

    Odoo系统自带产品的保质期管理。当产品需要进行保质期管理时,只要在库存设置里激活”批号/条码跟踪“ 和 ”保质期管理“即可:
    New_-_Odoo.png
    然后在需要进行保质期管理的产品维护界面里选择“批号或条码跟踪”,并配置产品的保质期期限。这样在产成品入库或者采购产品入库时输入的批次号上就自动包含了产品的保质期到期日,警告日等信息。可是估计很少有人知道到期前提醒是如何执行的。

    事实上在每个批次号上除了保质期到期日以外,还有一个保质期告警日期,这两个日期都是可以根据产品上的日期期限自动生成,也可以手动设定。到了某个产品批次的告警日期,系统会自动会为该批次打上报警标签,并向该产品的负责人发送提醒信息。

    所以,如果希望收到及时的保质期报警信息请在产品的维护界面为产品设置“产品负责人”

    Odoo.png

    posted in Odoo 培训
  • RE: 想在阿里云部署odoo,不知道需要选择什么配置,求大神指导

    很古老的提问了,链接一个答案:https://odoo.net.cn/topic/5707/odoo部署的服务器配置选择

    posted in Odoo 开发与实施交流
  • Odoo部署的服务器配置选择

    Odoo默认工作在“线程”模式下。当并发用户增加时,线程模式因为Python的GIL全局锁的限制,导致它无法分配现今多核服务器的其它内核来处理运算请求。所以,当有比较多的并发用户时,我们要将Odoo设置为“多进程”的模式,以充分利用服务器多核的计算资源。

    所谓让Odoo工作在“多进程模式“,就是给启动参数workers设置一个非0的数值,那设多少合适呢?

    首先,我们要知道:一个worker大致能并发处理6~10用户请求,所以比如60用户并发,那就大致需要配置10个worker

    Odoo的worker的值的设置还与服务器的内核数量有关,因为这些worker的负载最后是要由CPU内核运算单元来消化的。所以比如一个普通的单CPU,4核服务器,可以支持的workers的数量就是 2 * Cores + 1 = 9, 8个http worker, 1个cron job worker。 与上面的10个worker的需求接近,所以处理60用户并发我们可以选一台拥有4核的服务器,Odoo配置:

    workers = 8
    max_cron_threads = 1
    

    那么内存应该配置多少呢?一般一个任务繁重的worker占用1G内存,而大多数轻载的worker占用内存为150M左右。而在实际的应用中遵守2/8法则,即重载worker和轻载worker的存在比例时20%/80%, 所以9个worker的内存需求为:
    9 * (0.8 * 150 + 0.2 * 1024)≂ 3 G RAM

    由此可以看出,Odoo还是一个并不怎么消耗服务器资源的平台。

    posted in Odoo 培训
  • RE: Odoo的XML-ID

    哈哈,还真有人回应我的问题。
    这句话是关键:

    事实上你所定义的模型和字段也有自己的XML-ID的

    你的截图中的XML-ID对应的是保存在res_partner表中的一条记录。而sale.field_sale_order__partner_id 对应的是保存在ir_model_fields表中的一条记录。
    你现在应该能说得清这条记录的含义了吧?

    posted in Odoo 培训
  • RE: windows环境下__manifest__.py中文字符报错

    👍 感谢分享🙏

    posted in Odoo 开发与实施交流