Отношение основных деталей, переменные и XML в OpenERP 7

Я пытаюсь создать модуль спецификации продукта в OpenERP 7. Некоторая работа уже проделана. Но путают с отношением Master-detail, Variables & XML.

Взгляните на эту картинку

введите здесь описание изображения

Необходимо создать эту нижнюю часть из этого файла .py и .xml.

product_pspec.py

from openerp.osv import osv, fields

class product_pspec(osv.osv):

  _name = "product.pspec"

  _columns = {
    'prototype': fields.char('Prototype#', size=20),
    'style': fields.char('Style#', size=20),
    'customer': fields.char('Customer', size=20),
    'body_type': fields.char('Body Type', size=20),
    'program_brand': fields.char('Program/Brand', size=20),
    'color_asstmnt': fields.char('Color Asstmnt', size=200),
    'size_info': fields.integer('Size Info', size=20),
    'description': fields.char('Description', size=500),
    'designer': fields.char('Designer', size=20),
    'factory': fields.char('factory', size=20),
    'pcs_hanger': fields.integer('Pcs/Hanger', size=20),
    'developed_sold': fields.char('Developed/Sold', size=20),

  }


class product_pspec_details(osv.osv):

  _name = "product.pspec.details"

  _columns = {
       'product_pspec_id' : fields.many2one('product.pspec', 'Product Pspec', required=True),
       'product_product_id' : fields.many2one('product.product', 'Product Product', required=True),
       'supplier_name': fields.char('Supplier Name', size=20),
       'style_number': fields.char('Style Number', size=20),
       'where_used': fields.char('Where Used', size=20),
       'est_yield': fields.char('Est. Yield', size=20),
       'price': fields.char('Price', size=20),
       'cost_dz': fields.char('Cost Dz', size=20),
  }
  _sql_constraints = [
        ('uniq_name', 'unique(product_product_id, supplier_name, where_used)', "Already Added"),
  ]

product_pspec()
product_pspec_details()

product_pspec.py.xml

    <?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>
<record model="ir.ui.view" id="product_pspec_product">
<field name="name">product.pspec</field>
<field name="model">product.pspec</field>
<field name="arch" type="xml">
  <form string="Create product Specification" version="7.0">
    <group>
    <field name="prototype"/>
    <field name="style"/>
    <field name="customer"/>
    <field name="body_type"/>
    <field name="program_brand"/>
    <field name="color_asstmnt"/>
    <field name="size_info"/>
    <field name="description"/>
    <field name="designer"/>
    <field name="factory"/>
    <field name="pcs_hanger"/>
    <field name="developed_sold"/>
    <field colspan="4" name="product_pspec_id" widget="many2one_list">
        <tree string="Materials" editable="bottom">
     <field name="product_product_id"/>
     <field name="Supplier Name"/>
     <field name="Style number"/>
     <field name="Where Used"/>
        </tree>
    </field>
    </group>
   </form>
</field>
</record>
<record id="product_specification_product_act_window" model="ir.actions.act_window">
        <field name="name">Product Specification</field>
        <field name="type">ir.actions.act_window</field>
        <field name="res_model">product.pspec</field>
        <field name="view_type">form</field>
        <field name="view_id" ref="product_pspec_product"/>
</record>
 <menuitem
        name="Product Specification"
        id="menu_product_specification"
        parent="base.menu_mrp_root"
        sequence="16"
        />


 <menuitem
        name="Product Pspec"
        id="menu_product_pspec"
        parent="menu_product_specification"
     action="product_specification_product_act_window"
        />


</data>
</openerp>

Как создать нижнюю/отмеченную часть.

** Компонентная часть является примером, который мне нужно создать только для этого. Верхняя часть и меню уже готовы.


person Tanjil Abedin    schedule 06.02.2014    source источник


Ответы (1)


отредактировано:

Насколько я понимаю, вы хотите создать отношение one2many между pspec и pspec.details. на вашей стороне деталей все выглядит хорошо, но на вашей стороне pspec вам нужно дополнительное поле one2many по отношению к вашим данным, например:

from openerp.osv import orm, fields

class product_pspec(orm.Model):

  _name = "product.pspec"

  _columns = {
    'prototype': fields.char('Prototype#', size=20),
    'style': fields.char('Style#', size=20),
    'customer': fields.char('Customer', size=20),
    'body_type': fields.char('Body Type', size=20),
    'program_brand': fields.char('Program/Brand', size=20),
    'color_asstmnt': fields.char('Color Asstmnt', size=200),
    'size_info': fields.integer('Size Info', size=20),
    'description': fields.char('Description', size=500),
    'designer': fields.char('Designer', size=20),
    'factory': fields.char('factory', size=20),
    'pcs_hanger': fields.integer('Pcs/Hanger', size=20),
    'developed_sold': fields.char('Developed/Sold', size=20),
    'details_ids':fields.one2many("product.pspec.details","product_pspec_id", string="Details") #new field

  }


class product_pspec_details(osv.osv):

  _name = "product.pspec.details"

  _columns = {
       'product_pspec_id' : fields.many2one('product.pspec', 'Product Pspec', required=True),
       'product_product_id' : fields.many2one('product.product', 'Product Product', required=True),
       'supplier_name': fields.char('Supplier Name', size=20),
       'style_number': fields.char('Style Number', size=20),
       'where_used': fields.char('Where Used', size=20),
       'est_yield': fields.char('Est. Yield', size=20),
       'price': fields.char('Price', size=20),
       'cost_dz': fields.char('Cost Dz', size=20),
  }
  _sql_constraints = [
        ('uniq_name', 'unique(product_product_id, supplier_name, where_used)', "Already Added"),
  ]

Затем вы должны использовать это новое поле в своем представлении (xml):

<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>
<record model="ir.ui.view" id="product_pspec_product">
<field name="name">product.pspec</field>
<field name="model">product.pspec</field>
<field name="arch" type="xml">
  <form string="Create product Specification" version="7.0">
    <group>
    <field name="prototype"/>
    <field name="style"/>
    <field name="customer"/>
    <field name="body_type"/>
    <field name="program_brand"/>
    <field name="color_asstmnt"/>
    <field name="size_info"/>
    <field name="description"/>
    <field name="designer"/>
    <field name="factory"/>
    <field name="pcs_hanger"/>
    <field name="developed_sold"/>
    <field colspan="4" name="details_ids">
        <tree string="Materials" editable="bottom">
             <field name="product_product_id"/>
             <field name="supplier_name"/>
             <field name="style_number"/>
             <field name="where_used"/>
        </tree>
    </field>
    </group>
   </form>
</field>
</record>
person CZoellner    schedule 06.02.2014
comment
Попробуйте сделать это, ошибка показывает... кроме_orm: ('ValidateError', u'Ошибка произошла при проверке поля (ов) арки: недопустимый XML для архитектуры представления!') - person Tanjil Abedin; 08.02.2014
comment
‹имя поля=фабрика/› ‹имя поля=pcs_hanger/› ‹имя поля=developed_sold/› ‹коллекторность поля=4 name=details_ids widget=many2one_list› ‹строка дерева=материалы редактируемые=нижняя› ‹имя поля=id_продукта/› ‹ имя поля=Имя поставщика/› ‹имя поля=Номер стиля/› ‹имя поля=Где используется/› ‹/дерево› ‹/поле› ‹/группа› ‹/форма› ‹/поле› ‹/запись› - person Tanjil Abedin; 09.02.2014
comment
Просто покажите измененную часть XML. Комментарий не может разрешить полный код - person Tanjil Abedin; 09.02.2014
comment
‹имя поля=имя поставщика/› ‹имя поля=номер стиля/› ‹имя поля=где используется/› необходимо использовать имена полей: имя_поставщика, номер_стиля и где_используется - person CZoellner; 09.02.2014
comment
я предполагаю, что вы получили новое поле details_ids в вашей модели product.pspec. теперь вам нужно только изменить свой файл xml на (замена поля с именем = product_pspec_id: <field colspan="4" name="details_ids"> <tree string="Materials" editable="bottom"> <field name="product_product_id"/> <field name="supplier_name"/> <field name="style_number"/> <field name="where_used"/> </tree> </field> - person CZoellner; 09.02.2014
comment
Извините. Тем не менее Это ошибка Ошибка при проверке поля (ов) арки: недопустимый XML для архитектуры представления. Я не знаю, почему это происходит. Попробуйте по-разному, но на выходе одна и та же ошибка. - person Tanjil Abedin; 10.02.2014
comment
Вы можете опубликовать всю трассировку стека в pastebin, а затем дать ссылку на нее? - person CZoellner; 10.02.2014
comment
скопируйте его из вывода вашей IDE (например, Eclipse) на pastebin.com и дайте мне ссылку на него - person CZoellner; 10.02.2014
comment
Привет, Танджил. Надеюсь, твоя проблема решена. если нет, то вы можете спросить дальше. Но если решено, примите ответ и оцените помощь. - person Mansi; 11.02.2014