我在Odoo中有一个带有函数的计算字段.当我不添加商店参数时,一切正常.当我添加store参数时,它根本不执行代码.
我的代码:
class opc_actuelewaardentags(models.Model):
_name = 'opc_actuelewaardentags'
unit = fields.Char(compute='changeunit')
def changeunit(self):
print "print"
allrecords_actwaardent = self.search([])
obj_taginst = self.env['opc_taginstellingen']
allrecords_taginst = obj_taginst.search([])
for i in allrecords_actwaardent:
for j in allrecords_taginst:
if i.tagnaam == j.tagnaam and i.unit != j.unit:
i.unit = j.unit
Run Code Online (Sandbox Code Playgroud)
所以:当我调用这样的代码时:
unit = fields.Char(compute='changeunit')
Run Code Online (Sandbox Code Playgroud)
代码被执行(显示"打印").
当我这样调用代码时:
unit = fields.Char(compute='changeunit', store=True)
Run Code Online (Sandbox Code Playgroud)
代码未执行(不显示"print").
我的代码有什么问题吗?或者这是一个错误?这对我来说似乎很奇怪......
我需要能够将值存储在数据库中,以便我可以在树视图中过滤单元.
编辑:我应用了Juan Salcedo的提示.没工作......
我就这样做了:
unit = fields.Char(default = changeunit)
def changeunit(self):
print "print"
allrecords_actwaardent = self.search([])
obj_taginst = self.env['opc_taginstellingen']
#Hier dan i.p.v. self werken met …Run Code Online (Sandbox Code Playgroud) 我试图在一个Odoo表单视图中使一个字段不可见.检查"可以出售"时==>"产品经理"应该是不可见的:
我尝试在产品表单的继承视图中使用属性"invisible"与域:
<record model="ir.ui.view" id="product_template_form_inherit">
<field name="name">product.template.product.form</field>
<field name="model">product.template</field>
<field name="inherit_id" ref="product.product_template_only_form_view" />
<field name="arch" type="xml">
<field name="product_manager" position="attributes">
<attribute name="invisible">[('sale_ok', '=', True)]</attribute>
</field>
</field>
</record>
Run Code Online (Sandbox Code Playgroud)
当字段sale_ok为true时,product_manager字段实际上是隐藏的.但是当字段sale_ok再次变为false时,字段product_manager保持隐藏状态.
我也试过这个:
<field name="product_manager" attrs="{'invisible': [('sale_ok', '=', True)]}"/>
Run Code Online (Sandbox Code Playgroud)
这也不起作用.
我也尝试过其他域名:
[('sale_ok', '==', True)]
[('sale_ok', '!=', False)]
[('sale_ok', '=', 'True')]
Run Code Online (Sandbox Code Playgroud)
不确定这里有什么问题......当(未)检查时如何使它(in)可见?
我最终得到的是以下内容:选中复选框后,表单应立即更改而不保存.必须添加和删除字段.那可能吗?
编辑:
我现在可以用ChesuCR的答案隐藏/取消隐藏产品经理.但是,当我使用"loc_rack"(存储位置==>机架)尝试相同的操作时,它会给出错误:
Field(s) `arch` failed against a constraint: Invalid view definition
Error details:
Element '<field name="loc_rack">' cannot be located in parent view
Run Code Online (Sandbox Code Playgroud)
这是我使用的代码:
<field name="loc_rack" position="replace">
<field name="loc_rack" attrs="{'invisible': …Run Code Online (Sandbox Code Playgroud) 在Odoo中,您可以无法在树视图中创建或删除记录,如下所示:
<tree create="false" delete="false">
<field name="create_date" readonly="True"/>
</tree>
Run Code Online (Sandbox Code Playgroud)
但我仍然可以点击记录并转到该记录的表格.有没有办法让它无法点击这些记录并进行编辑?
基于为一个模型openerp创建两个图形视图,我为Odoo V8.0中的一个模型创建了2个不同的树视图.这很好用.
但是现在我还想为这两个树视图添加表单视图.当我在.xml中添加表单视图时,一切都搞砸了.我在de .xml中尝试了很多不同的命令,但我无法解决这个问题.
当我从.xml中删除表单时,表单显示模型的所有字段.我只想展示其中一些.
这是我的views.xml:
<openerp>
<data>
<record model="ir.ui.view" id="opc_instellingen_id">
<field name="name">opc_taginstellingen_tree</field>
<field name="model">opc_tags</field>
<field name="type">tree</field>
<field name="arch" type="xml">
<tree>
<field name="tagnaam"/>
<field name="lezenschrijven"/>
<field name="logging"/>
<field name="unit"/>
</tree>
</field>
</record>
<record model="ir.ui.view" id="opc_instellingen_id">
<field name="name">opc_taginstellingen_form</field>
<field name="model">opc_tags</field>
<field name="type">form</field>
<field name="arch" type="xml">
<form string="OPC Taginstellingen">
<group colspan="1" col="4">
<field name="tagnaam"/>
<field name="lezenschrijven"/>
<field name="logging"/>
<field name="unit"/>
</group>
</form>
</field>
</record>
<record model="ir.ui.view" id="opc_actuele_waarden_id">
<field name="name">opc_actuelewaardentags_tree</field>
<field name="model">opc_tags</field>
<field name="arch" type="xml">
<tree delete="false">
<field name="tagnaam" …Run Code Online (Sandbox Code Playgroud) 在Odoo中,当你有一个xpath时,你可以在满足条件时将"attrs"添加到一个字段,如必需或不可见.这很好用.
我正在尝试将这些结合起来2.我无法让它工作,无法在任何地方找到如何做到这一点.
例如,这是可能的:
<field name="name" attrs="{'invisible': [('condition', '=', False)]}"/>
<field name="name2" attrs="{'readonly': [('condition', '=', False)]}"/>
<field name="name3" attrs="{'required': [('condition', '=', False)]}"/>
Run Code Online (Sandbox Code Playgroud)
但我无法工作的是:
<field name="name" attrs="{'invisible': [('condition1', '=', False)]}, 'required': [('condition2', '=', True)]}"/>
Run Code Online (Sandbox Code Playgroud)
我想要一个字段在满足条件1时不可见,并且(当)满足条件2时也需要.我尝试了不同的语法,但不知道该怎么做.
这样做的正确方法是什么?
我正在尝试对 psql 数据库进行选择查询。但我的列名是“Tagnaam”,所以区分大小写。
我正在尝试这个查询:
cur.execute("SELECT Tagnaam FROM opc_taginstellingen")
Run Code Online (Sandbox Code Playgroud)
我读过解决方案是在列名上使用双引号,但这并不能解决问题。
我也尝试过:
cur.execute("SELECT "Tagnaam" FROM opc_taginstellingen")
cur.execute("SELECT ""Tagnaam"" FROM opc_taginstellingen")
cur.execute("SELECT '"Tagnaam"' FROM opc_taginstellingen")
Run Code Online (Sandbox Code Playgroud)
以上均无效。
它给出的错误:
cur.execute("SELECT Tagnaam FROM opc_taginstellingen")
psycopg2.ProgrammingError: column "tagnaam" does not exist
LINE 1: SELECT Tagnaam FROM opc_taginstellingen
^
Run Code Online (Sandbox Code Playgroud)
我怎么解决这个问题?
提前致谢。
odoo ×5
xml ×4
field ×2
odoo-view ×2
python ×2
treeview ×2
attributes ×1
formview ×1
inheritance ×1
openerp ×1
postgresql ×1
psql ×1