跳转至内容
  • 版块
  • 标签
  • 热门
  • 用户
  • 群组
皮肤
  • 浅色
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • 深色
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • 默认(Flatly)
  • 不使用皮肤
折叠

Odoo 中文社区

  1. 主页
  2. 版块
  3. Odoo 开发与实施交流
  4. 产品类别不能删除的Bug

产品类别不能删除的Bug

已定时 已固定 已锁定 已移动 Odoo 开发与实施交流
5 帖子 2 发布者 7.6k 浏览 1 关注中
  • 从旧到新
  • 从新到旧
  • 最多赞同
回复
  • 在新帖中回复
登录后回复
此主题已被删除。只有拥有主题管理权限的用户可以查看。
  • S 离线
    S 离线
    stbrine
    发表于 最后由 编辑
    #1

    产品类别下的所有产品已经删除,但该类别不能删除,错误日志:
    Traceback (most recent call last):
      File "modules\gui\main.pyo", line 1334, in _sig_child_call
      File "modules\gui\window\form.pyo", line 263, in sig_remove
      File "widget\screen\screen.pyo", line 522, in remove
      File "rpc.pyo", line 349, in call
      File "rpc.pyo", line 170, in rpc_exec_auth
      File "rpc.pyo", line 113, in exec_auth
      File "rpc.pyo", line 119, in execute
      File "tiny_socket.pyo", line 81, in myreceive
    tiny_socket.Myexception: ('warning -- Integrity Error\n\nnull value in column "categ_id" violates not-null constraint\nCONTEXT:  SQL statement "UPDATE ONLY "public"."product_template" SET "categ_id" = NULL WHERE $1 OPERATOR(pg_catalog.=) "categ_id""\n', 'Traceback (most recent call last):\n  File "netsvc.pyo", line 256, in dispatch\n  File "netsvc.pyo", line 76, in call\n  File "service\web_services.pyo", line 577, in execute\n  File "osv\osv.pyo", line 70, in wrapper\n  File "netsvc.pyo", line 61, in abortResponse\nException: warning -- Integrity Error\n\nnull value in column "categ_id" violates not-null constraint\nCONTEXT:  SQL statement "UPDATE ONLY "public"."product_template" SET "categ_id" = NULL WHERE $1 OPERATOR(pg_catalog.=) "categ_id""\n\n')

    原因是当product.product记录删除后,product.template并没有跟着删除
    附修复记录的脚本,请在执行时先做好备份,本人不对该脚本产生的任何后果负责。

    <br /># -*- encoding: utf-8 -*-<br />#修复删除产品后product.template记录没有删除的数据<br /><br />import xmlrpclib&nbsp; #导入xmlrpc库,这个库是python的标准库。<br />#dbname = raw_input(u&quot;输入帐套:\n&quot;)<br />dbname = &#039;xxxxxx&#039;<br />username =&#039;admin&#039; #用户登录名<br />pwd = &#039;xxxxxxx&#039; #用户的登录密码,测试时请换成自己的密码<br /><br /># 第一步,取得uid<br />sock_common = xmlrpclib.ServerProxy (&#039;http://127.0.0.1:8069/xmlrpc/common&#039;)<br />uid = sock_common.login(dbname, username, pwd)<br />sock = xmlrpclib.ServerProxy(&#039;http://127.0.0.1:8069/xmlrpc/object&#039;)<br /><br />p_ids = sock.execute(dbname, uid, pwd, &#039;product.product&#039;, &#039;search&#039;,&#91;],0,20000,&#039;id&#039;)<br />print p_ids<br />vals = sock.execute(dbname, uid, pwd,&#039;product.product&#039;, &#039;read&#039;, p_ids,&#91;&#039;id&#039;,&#039;name&#039;,&#039;product_tmpl_id&#039;])<br />t_idok=&#91;]<br />for v in vals:<br />&nbsp; &nbsp; t_idok.append(v&#91;&#039;product_tmpl_id&#039;][0])<br />print u&#039;product_tmpl_id 列表&#039;<br />print t_idok<br /><br />del_t=sock.execute(dbname, uid, pwd, &#039;product.template&#039;, &#039;search&#039;,[(&#039;id&#039;,&#039;not in&#039;,t_idok)])<br />ok_t=sock.execute(dbname, uid, pwd, &#039;product.template&#039;, &#039;search&#039;,[(&#039;id&#039;,&#039;in&#039;,t_idok)])<br />print &#039;正常的 product_tmpl_id 列表&#039;<br />print ok_t<br />print &#039;不存在的 product_tmpl_id 列表-&#039;<br />print del_t<br />sock.execute(dbname, uid, pwd, &#039;product.template&#039;, &#039;unlink&#039;,del_t)<br />print u&quot;设置完成&quot;<br /><br />
    



    修复记录不是最终的解决方案,请哪位大虾提供下修复的方案!!!

    1 条回复 最后回复
    0
    • M 离线
      M 离线
      mrshelly
      发表于 最后由 编辑
      #2

      最简单的莫过于 去数据库里, 修改  product_template 表结构 中的 categ_id 字段 把"非空"的勾选去掉...

      或者修改  addons\product\product.py 文件中 product.template 对象的 categ_id 字段的 required="True" 去掉, 或者改为 "False" 然后 重新更新模块(是否更新有效, 需要小白鼠测试")

      1 条回复 最后回复
      0
      • S 离线
        S 离线
        stbrine
        发表于 最后由 编辑
        #3

        为什么OE在删除product.product的记录时不一起删掉product.template中的记录,难道product.template中的记录要永久保存?

        1 条回复 最后回复
        0
        • M 离线
          M 离线
          mrshelly
          发表于 最后由 编辑
          #4

          嗯. 这个应该是系统BUG了... 不知道官方有没有人报出来

          1 条回复 最后回复
          0

          你好!看起来您对这段对话很感兴趣,但您还没有一个账号。

          厌倦了每次访问都刷到同样的帖子?您注册账号后,您每次返回时都能精准定位到您上次浏览的位置,并可选择接收新回复通知(通过邮件或推送通知)。您还能收藏书签、为帖子顶,向社区成员表达您的欣赏。

          有了你的建议,这篇帖子会更精彩哦 💗

          注册 登录
          回复
          • 在新帖中回复
          登录后回复
          • 从旧到新
          • 从新到旧
          • 最多赞同


          • 登录

          • 没有帐号? 注册

          • 登录或注册以进行搜索。
          • 第一个帖子
            最后一个帖子
          0
          • 版块
          • 标签
          • 热门
          • 用户
          • 群组