我已经创建了model对象和对应的xml,但是在odoo首页点击Create按钮添加数据对象时,出现如下错误:
ValueError: All strings must be XML compatible: Unicode or ASCII, no NULL bytes or control characters
sudo locale时,出现这些
LANG=zh_CN.UTF-8
LANGUAGE=zh_CN:en_US:en
LC_CTYPE="zh_CN.UTF-8"
LC_NUMERIC=zh_CN.UTF-8
LC_TIME=zh_CN.UTF-8
LC_COLLATE="zh_CN.UTF-8"
LC_MONETARY=zh_CN.UTF-8
LC_MESSAGES="zh_CN.UTF-8"
LC_PAPER=zh_CN.UTF-8
LC_NAME=zh_CN.UTF-8
LC_ADDRESS=zh_CN.UTF-8
LC_TELEPHONE=zh_CN.UTF-8
LC_MEASUREMENT=zh_CN.UTF-8
LC_IDENTIFICATION=zh_CN.UTF-8
LC_ALL=
# -*- coding: utf-8 -*-
from odoo import models, api, fields
class follower(models.Model):
_inherit = 'res.partner'
bug_ids = fields.Many2many('bm.bug',string='bug')
# -*- coding: utf-8 -*-
from odoo import models,api,fields
class bug(models.Model):
_name = 'bm.bug'
_description = 'bug'
name = fields.Char(u'bug简述',required=True)
detail = fields.Text(size=150)
is_closed = fields.Boolean(u'是否关闭')
close_reason = fields.Selection([('changed',u'已修改'),('cannot',u'无法修改'),('delay',u'推迟')],string='关闭理由')
user_id = fields.Many2one('res.users',string=u'负责人')
follower_id = fields.Many2many('res.partner',string=u'关注者')
@api.multi
def do_close(self):
for item in self:
item.is_closed = True
return True
# -*- coding: utf-8 -*-
from odoo import api,fields,models
class bugAdvanced(models.Model):
_inherit = 'bm.bug'
need_time = fields.Integer(string='所需时间(小时)')
name = fields.Char(help='简要描述发现的bug')
stage_id = fields.Many2one('bm.bug.stage', string='阶段')
tag_ids = fields.Many2many('bm.bug.tag',string='标示')
# -*- coding: utf-8 -*-
from odoo import models,fields,api
class bugStage(models.Model):
_name = 'bm.bug.stage'
_description = 'bug阶段'
_order = 'sequence,name'
name = fields.Char('名称')
desc_detail = fields.Text('描述')
status = fields.Selection([('waiting','未开始'),('doing','进行中'),('closed','关闭'),('rework','重测未通过')],'状态')
document = fields.Html('文档')
sequence = fields.Integer('Sequence')
percent_pro = fields.Float('进度',(3,2))
deadline = fields.Date('最晚解决日期')
create_on = fields.Datetime('创建时间',default=lambda self:fields.Datetime.now())
delay = fields.Boolean('是否延误')
image = fields.Binary('图片')
# -*- coding: utf-8 -*-
from odoo import fields,models,api
class bugTag(models.Model):
_name = 'bm.bug.tag'
_description = 'bug标示'
name = fields.Char('名称')
bug_ids = fields.Many2many('bm.bug',string='bug')
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data>
<record model="ir.ui.view" id="bug-manage_list">
<field name="name">bug列表</field>
<field name="model">bm.bug</field>
<field name="arch" type="xml">
<tree>
<field name="name"/>
<field name="is_closed"/>
<field name="user_id"/>
</tree>
</field>
</record>
<record model="ir.ui.view" id="bug-manage_form">
<field name="name">bug列表</field>
<field name="model">bm.bug</field>
<field name="arch" type="xml">
<form>
<header>
<button name="do_close" type="object" string="关闭bug"/>
</header>
<sheet>
<group name="group_top" col="2">
<group name="goup_left">
<field name="name"/>
<field name="user_id"/>
<field name="is_closed"/>
</group>
<group name="group_right">
<field name="close_reason"/>
<field name="follower_id"/>
</group>
</group>
<notebook>
<page string="详细内容">
<field name="detail"/>
</page>
</notebook>
</sheet>
</form>
</field>
</record>
<record model="ir.ui.view" id="bug-manage_search">
<field name="name">bug搜索</field>
<field name="model">bm.bug</field>
<field name="arch" type="xml">
<search>
<field name="name"/>
<field name="is_closed"/>
<field name="user_id"/>
</search>
</field>
</record>
<record model="ir.actions.act_window" id="bug-manage_action_window">
<field name="name">bug-manage window</field>
<field name="res_model">bm.bug</field>
<field name="view_mode">tree,form</field>
</record>>
<menuitem name="bug管理系统" id="menu_root"/>
<menuitem name="bug管 理" id="menu_1" parent="bug-manage.menu_root"/>
<menuitem name="bug列表" id="menu_1_list" parent="bug-manage.menu_1" action="bug-manage.bug-manage_action_window"/>
</data>>
</odoo>
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data>
<record model="ir.ui.view" id="bug-manage_follower_form">
<field name="name">关注者</field>
<field name="model">res.partner</field>
base.view_partner_form-->
<field name="inherit_id" ref="base.view_partner_form"/>
<field name="arch" type="xml">
<field name="mobile" position="after">
<field name="bug_ids"/>
</field>
</field>
</record>
<record model="ir.actions.act_window" id="bug-manage_follower_action_window">
<field name="name">follower window</field>
<field name="res_model">res.partner</field>
<field name="view_mode">form</field>
</record>
<menuitem name="关注者管理" id="menu_2" parent="bug-manage.menu_root"/>
<menuitem name="关注者" id="menu_2_form" parent="bug-manage.menu_2" action="bug-manage.bug-manage_follower_action_window"/>
</data>
</odoo>
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data>
<record model="ir.ui.view" id="bug-manage_form2">
<field name="name">bug表单2</field>
<field name="model">bm.bug</field>
<field name="inherit_id" ref="bug-manage.bug-manage_form"/>
<field name="arch" type="xml">
<xpath expr="//field[@name='follower_id']" position="after">
<field name="stage_id"/>
<field name="tag_ids"/>
</xpath>
</field>
</record>
</data>
</odoo>
Traceback (most recent call last):
File "/home/python/Desktop/odoo10/server/odoo/http.py", line 638, in _handle_exception
return super(JsonRequest, self)._handle_exception(exception)
File "/home/python/Desktop/odoo10/server/odoo/http.py", line 675, in dispatch
result = self._call_function(**self.params)
File "/home/python/Desktop/odoo10/server/odoo/http.py", line 331, in _call_function
return checked_call(self.db, *args, **kwargs)
File "/home/python/Desktop/odoo10/server/odoo/service/model.py", line 119, in wrapper
return f(dbname, *args, **kwargs)
File "/home/python/Desktop/odoo10/server/odoo/http.py", line 324, in checked_call
result = self.endpoint(*a, **kw)
File "/home/python/Desktop/odoo10/server/odoo/http.py", line 933, in __call__
return self.method(*args, **kw)
File "/home/python/Desktop/odoo10/server/odoo/http.py", line 504, in response_wrap
response = f(*args, **kw)
File "/home/python/Desktop/odoo10/server/odoo/addons/web/controllers/main.py", line 872, in call_kw
return self._call_kw(model, method, args, kwargs)
File "/home/python/Desktop/odoo10/server/odoo/addons/web/controllers/main.py", line 864, in _call_kw
return call_kw(request.env[model], method, args, kwargs)
File "/home/python/Desktop/odoo10/server/odoo/api.py", line 685, in call_kw
return call_kw_model(method, model, args, kwargs)
File "/home/python/Desktop/odoo10/server/odoo/api.py", line 670, in call_kw_model
result = method(recs, *args, **kwargs)
File "/home/python/Desktop/odoo10/server/odoo/models.py", line 1328, in load_views
for [v_id, v_type] in views
File "/home/python/Desktop/odoo10/server/odoo/models.py", line 1328, in <dictcomp>
for [v_id, v_type] in views
File "/home/python/Desktop/odoo10/server/odoo/models.py", line 1399, in fields_view_get
arch_etree = getattr(self, '_get_default_%s_view' % view_type)()
File "/home/python/Desktop/odoo10/server/odoo/models.py", line 1230, in _get_default_tree_view
return E.tree(element, string=self._description)
File "/home/python/.virtualenvs/rhc_odoo_v10.0/local/lib/python2.7/site-packages/lxml/builder.py", line 218, in __call__
get(dict)(elem, attrib)
File "/home/python/.virtualenvs/rhc_odoo_v10.0/local/lib/python2.7/site-packages/lxml/builder.py", line 203, in add_dict
attrib[k] = v
File "src/lxml/lxml.etree.pyx", line 2402, in lxml.etree._Attrib.__setitem__ (src/lxml/lxml.etree.c:72066)
File "src/lxml/apihelpers.pxi", line 570, in lxml.etree._setAttributeValue (src/lxml/lxml.etree.c:23009)
File "src/lxml/apihelpers.pxi", line 1439, in lxml.etree._utf8 (src/lxml/lxml.etree.c:32441)
ValueError: All strings must be XML compatible: Unicode or ASCII, no NULL bytes or control characters
最佳答案
通过使用 u'your_label':
help=u'简要描述发现的bug'
_description = u'bug阶段'
string=u'所需时间(小时)'
fields.Selection([('waiting',u'未开始'),('doing',u'进行中')....
我也在用阿拉伯语编码,我总是使用 Unicode 作为我的标签以避免这个问题。
关于python - 在odoo开发中,我每次创建数据的时候,都会出现这样的xml编码错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57780801/
出于纯粹的兴趣,我很好奇如何按顺序创建PI,而不是在过程结果之后生成数字,而是让数字在过程本身生成时显示。如果是这种情况,那么数字可以自行产生,我可以对以前看到的数字实现垃圾收集,从而创建一个无限系列。结果只是在Pi系列之后每秒生成一个数字。这是我通过互联网筛选的结果:这是流行的计算机友好算法,类机器算法:defarccot(x,unity)xpow=unity/xn=1sign=1sum=0loopdoterm=xpow/nbreakifterm==0sum+=sign*(xpow/n)xpow/=x*xn+=2sign=-signendsumenddefcalc_pi(digits
关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭4年前。Improvethisquestion我想在固定时间创建一系列低音和高音调的哔哔声。例如:在150毫秒时发出高音调的蜂鸣声在151毫秒时发出低音调的蜂鸣声200毫秒时发出低音调的蜂鸣声250毫秒的高音调蜂鸣声有没有办法在Ruby或Python中做到这一点?我真的不在乎输出编码是什么(.wav、.mp3、.ogg等等),但我确实想创建一个输出文件。
我主要使用Ruby来执行此操作,但到目前为止我的攻击计划如下:使用gemsrdf、rdf-rdfa和rdf-microdata或mida来解析给定任何URI的数据。我认为最好映射到像schema.org这样的统一模式,例如使用这个yaml文件,它试图描述数据词汇表和opengraph到schema.org之间的转换:#SchemaXtoschema.orgconversion#data-vocabularyDV:name:namestreet-address:streetAddressregion:addressRegionlocality:addressLocalityphoto:i
使用带有Rails插件的vim,您可以创建一个迁移文件,然后一次性打开该文件吗?textmate也可以这样吗? 最佳答案 你可以使用rails.vim然后做类似的事情::Rgeneratemigratonadd_foo_to_bar插件将打开迁移生成的文件,这正是您想要的。我不能代表textmate。 关于ruby-使用VimRails,您可以创建一个新的迁移文件并一次性打开它吗?,我们在StackOverflow上找到一个类似的问题: https://sta
我有一个对象has_many应呈现为xml的子对象。这不是问题。我的问题是我创建了一个Hash包含此数据,就像解析器需要它一样。但是rails自动将整个文件包含在.........我需要摆脱type="array"和我该如何处理?我没有在文档中找到任何内容。 最佳答案 我遇到了同样的问题;这是我的XML:我在用这个:entries.to_xml将散列数据转换为XML,但这会将条目的数据包装到中所以我修改了:entries.to_xml(root:"Contacts")但这仍然将转换后的XML包装在“联系人”中,将我的XML代码修改为
我对最新版本的Rails有疑问。我创建了一个新应用程序(railsnewMyProject),但我没有脚本/生成,只有脚本/rails,当我输入ruby./script/railsgeneratepluginmy_plugin"Couldnotfindgeneratorplugin.".你知道如何生成插件模板吗?没有这个命令可以创建插件吗?PS:我正在使用Rails3.2.1和ruby1.8.7[universal-darwin11.0] 最佳答案 随着Rails3.2.0的发布,插件生成器已经被移除。查看变更日志here.现在
我正在编写一个包含C扩展的gem。通常当我写一个gem时,我会遵循TDD的过程,我会写一个失败的规范,然后处理代码直到它通过,等等......在“ext/mygem/mygem.c”中我的C扩展和在gemspec的“扩展”中配置的有效extconf.rb,如何运行我的规范并仍然加载我的C扩展?当我更改C代码时,我需要采取哪些步骤来重新编译代码?这可能是个愚蠢的问题,但是从我的gem的开发源代码树中输入“bundleinstall”不会构建任何native扩展。当我手动运行rubyext/mygem/extconf.rb时,我确实得到了一个Makefile(在整个项目的根目录中),然后当
如何使用RSpec::Core::RakeTask初始化RSpecRake任务?require'rspec/core/rake_task'RSpec::Core::RakeTask.newdo|t|#whatdoIputinhere?endInitialize函数记录在http://rubydoc.info/github/rspec/rspec-core/RSpec/Core/RakeTask#initialize-instance_method没有很好的记录;它只是说:-(RakeTask)initialize(*args,&task_block)AnewinstanceofRake
关闭。这个问题需要detailsorclarity.它目前不接受答案。想改进这个问题吗?通过editingthispost添加细节并澄清问题.关闭8年前。Improvethisquestion为什么SecureRandom.uuid创建一个唯一的字符串?SecureRandom.uuid#=>"35cb4e30-54e1-49f9-b5ce-4134799eb2c0"SecureRandom.uuid方法创建的字符串从不重复?
我已经在Sinatra上创建了应用程序,它代表了一个简单的API。我想在生产和开发上进行部署。我想在部署时选择,是开发还是生产,一些方法的逻辑应该改变,这取决于部署类型。是否有任何想法,如何完成以及解决此问题的一些示例。例子:我有代码get'/api/test'doreturn"Itisdev"end但是在部署到生产环境之后我想在运行/api/test之后看到ItisPROD如何实现? 最佳答案 根据SinatraDocumentation:EnvironmentscanbesetthroughtheRACK_ENVenvironm