2016-07-20 16 views
0

モジュールを使用してOdoo 9 res.partnerモデルにカスタムフィールドを追加しようとしています。 scoffoldコマンドを使用してモジュールファイルを生成し、models.pyとviews.xmlに次のコードを追加しました。モジュールを使用してカスタムフィールドを追加中にエラーが発生しました:ParseError:ファイルを解析中に "arch"

モデル/ models.py

from openerp import models, fields, api 
class SeicoPartner(models.Model): 
    _name = 'res.partner' 
    _inherit = 'res.partner' 

    no_of_ac = fields.Integer('No of AC', default=0) 
    review = fields.Char('Company Review') 

ビュー/ views.xmlアプリ画面から、このモジュールのインストール時に

<openerp> 
<data> 
    <record id="res_partner_field_ac" model="ir.ui.view"> 
     <field name="no_of_ac">10</field> 
    </record> 
</data> 
</openerp> 

は、私は次のエラーを得ました

Traceback (most recent call last): 
    ... 
    File "C:\Program Files (x86)\Odoo 9.0-20160719\server\openerp\addons\base\ir\ir_ui_view.py", line 344, in create 
ParseError: "arch" while parsing file:///C:/Program%20Files%20(x86)/Odoo%209.0-20160719/server/openerp/addons/mymodule1/views/views.xml:4, near 
<record id="res_partner_field_ac" model="ir.ui.view"> 
      <field name="no_of_ac">10</field> 

     </record> 

よりSettings -> Database Structure -> Fields私はres.partnerがno_of_acフィールドを持っているのを見ることができますが、顧客の詳細を編集している間はフィールドは表示されません。

答えて

1
、ほとんどの場合、XMLだけで結構ですビュー(XMLまたはHTMLのいずれか)のタイプを記述しますが、アーチフィールドが欠落しているためだ

ます。また、モデル名が欠落している

、ビュー名odooはあなたのビューがどのモデルに属しているのかわかりません。あなたは上書きしたい既存のモデルフォームと新しいフィールドを置く位置を指定する必要があります。この場合、親ビューのウェブサイトフィールドの後にフィールドを表示するためにxpath式を使用しました。あなたが望むところにあればどこにでもいてください。

<openerp> 
<data> 
    <record id="res_partner_field_ac" model="ir.ui.view"> 
     <field name="name">res.partner.form</field> 
     <field name="model">res.partner</field> 
     <field name="inherit_id" ref="base.view_partner_form"/> 
     <field name="arch" type="xml"> 
     <xpath expr="//field[@name='website']" position="after"> 
      <field name="no_of_ac" /> 
     </xpath> 
     </field> 
    </record> 
</data> 
</openerp> 

もあなたが新しいを挿入しているあなただけのモデルを拡張し、それに余分なフィールドを追加したい場合は、_nameを指定する必要はありませんので、お使いの機種コードは、この

from openerp import models, fields, api 
class SeicoPartner(models.Model): 
    _inherit = 'res.partner' 

    no_of_ac = fields.Integer('No of AC', default=0) 
    review = fields.Char('Company Review') 
+0

を見てみましょうあなただけ追加することはできません。ビューにフィールド:あなたはフィールドの "添付"のビューの別のコンポーネントを宣言する必要があります –

+0

私のエラーを解決するためにこのメソッドを試しましたが、まだ "要素 ''親ビューでは見つかりません "...今、私はそれを解決するために何をすべきか教えてください。私はOdooの新しいユーザーですので、 助けて。 – user6592626

+0

@ user6592626私の編集を参照してください – danidee

1

に変更しますir.ui.viewデータモデルに記録してください。

<openerp> 
<data> 
    <record id="res_partner_field_ac" model="ir.ui.view"> 
     <field name="no_of_ac">10</field> 
    </record> 
</data> 
</openerp> 

しかし、あなたはにデータを挿入する:res.partner

<openerp> 
<data> 
    <record id="res_partner_field_ac" model="res.partner"> 
     <field name="name">a name here because it's required when the field type != 'contact' </field> 
     <field name="no_of_ac">10</field> 
    </record> 
</data> 
</openerp> 

注:archir.ui.viewモデルでrequriredフィールドであるので、あなたは、問題が発生しました。

+0

あなたはそれを試してみました! – Cherif

+0

私はそれを試みましたが、まだ次の解析エラーがあります: "関係の新しい行" res_partner "はチェック制約" res_partner_check_name "に違反します – user6592626

+1

名前がnullの場合、型フィールドはあなたのケースの名前あなたのコードに追加する必要があります – Cherif

1

あなたがデータレコードを追加したい場合は、モデルとしてres.partnerを使用し、必要なフィールドを定義する必要がありますビューを定義するには

<record id="res_partner_field_ac" model="res.partner"> 
    <field name="no_of_ac">10</field> 
    <field name="name">NEW PARTNER NAME</field> 
    <!-- define required fields --> 
</record> 

を、Odoo views

関連する問題