我想在这里做一些非常简单的事情。但我在文档中,SO上或http://help.openerp.com
上找不到任何内容我在表单上添加了一个字段(与另一个表有很多关系)。这创建了一个下拉菜单,可以选择或创建新值。
如果单击“创建和编辑”,将打开一个新窗口,您可以在其中填写一个字段并保存。但该领域的标签是“未知”。有人向我解释说我需要为这个表单创建一个视图。
所以我做了,我创建了这个视图,起初,我继承了另一种形式(用户的一种),但它给我带来了错误,抱怨缺少字段。我的问题是:我应该继承什么?
该过程在没有为此定义我自己的视图的情况下工作,但每当我选择一个现有记录,创建一个新记录时,该值不会出现,而是我拥有该表的名称,并将其标识符作为链接到记录(如果我没记错的话会打开一个新窗口)。有没有办法进行查找,并显示值?
这里是代码:
counties_view.xml
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>
<record model="ir.ui.view" id="hubclub_counties_form">
<field name="name">hubclub.counties.form</field>
<field name="model">hubclub.counties</field>
<field name="inherit_id" ref="base.view_users_form"/>
<field name="arch" type="xml">
<group>
<field name="county" />
</group>
</field>
</record>
</data>
</openerp>
额外attributes.xml
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>
<record model="ir.ui.view" id="hubclub_res_users_form">
<field name="name">res.users.form</field>
<field name="model">res.users</field>
<field name="inherit_id" ref="base.view_users_form"/>
<field name="arch" type="xml">
<xpath expr="/form/sheet/notebook/page[2]" position="after">
<page string="Hubclub specific settings">
<group>
<field name="county_id" />
</group>
</page>
</xpath>
</field>
</record>
</data>
</openerp>
OpenERP的的.py
# -*- coding: utf-8 -*-
{
'name': 'Hubclub module',
'version': '1.0',
'author': 'Openapp',
'category': 'Tools',
'depends': ['base', 'point_of_sale'],
'data': ['extra-attributes.xml', 'counties_view.xml'],
'demo': [],
'installable': True,
}
hubclub_module.py
# -*- coding: utf-8 -*-
from openerp.osv import fields, osv
class hubclub_counties(osv.osv):
_name = 'hubclub.counties'
_columns = {
'county': fields.text(),
}
_sql_constraints = [('county_uniq', 'unique(county)',
'Country already exists')]
# User
class res_users(osv.osv):
_name = 'res.users'
_inherit = 'res.users'
_columns = {
'county_id': fields.many2one('hubclub.counties', 'County'),
}
_defaults = {
}
res_users()
hubclub_counties()
答案 0 :(得分:1)
我不确定,但你可以试试这个:
_rec_name="your_many2one_field_name"
答案 1 :(得分:1)
这是因为对于模型hubclub.counties,对于字段'county',您没有指定任何标签。您必须在python端或xml端指定标签
在python方面:
_columns = {
'county': fields.text("the label for the field"),
}
在xml方面:
<field name="county_id" string="label for the field"/>
如果未在xml中指定label,则默认情况下它采用python端指定的标签。如果python中没有标签,那么label将是“Unknown”
2.查看继承:
在这里,您要在res.users中添加many2one字段“county”。为此,您必须首先在res.users中添加与hubclub.counties的关系。这是从python完成的。你已经正确完成了。问题出在您在counties_view.xml中定义的视图中。 base.view_users_form
是为模型res.users定义的视图。您试图继承此视图。但您遇到的问题是您将视图的模型指定为<field name="model">hubclub.counties</field>
这是错误的,因为模型hubclub.counties
没有带引用base.view_users_form
的视图。这就是错误出现的原因。在extra-attributes.xml中,您已正确更改它。对于继承视图,您必须指定正确的模型和inherit_id作为对视图的引用以及模块名称(例如<field name="inherit_id" ref="base.view_users_form"/>
此处view_users_form是视图ID, base 是模块名称)和字段位置的路径。
3.该字段的值作为模型名称和db引用:
这实际上是由Odedra回答的
对于我们创建的每个模型,我们必须指定在将此模型用于关系时应显示哪个字段的数据。默认情况下,会考虑“名称”字段。但是如果没有定义'name'字段,那么我们必须指定一个已经为该模型定义的字段。对于此过程,我们可以使用_rec_name
。
_rec_name = "field_name"
如果要显示2个或更多字段的数据作为记录的名称(例如,如果你转到产品的openerp中,那么它的名称就像变体名称,产品名称,代码)然后有一个函数被调用name_get()
,可用于显示多个字段数据作为记录的名称。