This question has been flagged
2 Replies
5286 Views

I have defined a new model "bicycle" for a virtual bicycle factory. Every bicycle has a frame number, type etc. When a customer calls, who has an issue with one or more bicycles, I like to add references in the issue to the bicycles by referencing the affected bicycles in the project issue form. An issue can be about zero or more bicycles, and a bicycle can have zero or more issues.

How would I implement this?

What is the correct type of the new field in the project issue model? one2many or many2many or something else? Do I need to do sth. in the XML view to prevent creation of a new bicycle object from the project issue? I want only reference bicycles already existing in the database. When I add a one2many field x_bicycle in the project issue table and use a <field name="x_bicycle"/> in the project issue form view, I get the following error:

ProgrammingError: operator does not exist: character varying = integer
LINE 1: ....id FROM "bicycle" WHERE ("bicycle"."framenumber" in (2)) OR...
                                                             ^
HINT:  No operator matches the given name and argument type(s). You might need to add explicit type casts.

What am I doing wrong? Thanks in advance!

This is bicycle.py:

from osv import fields, osv
import time

class bicycle(osv.osv):
    _name = "bicycle"
    _description = "Bicycle"
    _rec_name = "framenumber"
    _columns = {
        'framenumber': fields.char('Frame Number', size=7, required=True),
        'mechanic': fields.char('Mechanic Acronym', size=20),
        'productiondt': fields.datetime('Date/Time of Production'),
        'type': fields.selection(
            [('C', 'City Bicycle'),
             ('R', 'Road Bicycle'),
             ('T', 'Touring Bicycle'),
             ('F', 'Folding Bicycle')],
            'Type'),
        'framerevision': fields.selection(
            [('A', 'Revision A'),
             ('B', 'Revision B')],
            'Frame Revision'),
        }

    _sql_constraints = [
        ('framenumber_uniq', 'unique (framenumber)', 'The frame number must be unique!')
        ]

bicycle()

This is bicycle_view.xml:

<?xml version="1.0" encoding="utf-8"?>
<openerp>
    <data>
        <record model="ir.ui.view" id="bicycle_tree_view">
            <field name="name">bicycle.tree</field>
            <field name="model">bicycle</field>
            <field name="type">tree</field>
            <field name="arch" type="xml">
                <tree string="Bicycle">
                    <field name="framenumber"/>
                    <field name="type"/>
                    <field name="framerevision"/>
                    <field name="mechanic"/>
                </tree>
            </field>
        </record>

        <record model="ir.ui.view" id="bicycle_form_view">
            <field name="name">bicycle.form</field>
            <field name="model">bicycle</field>
            <field name="type">form</field>
            <field name="arch" type="xml">
                <form string="Bicycle">
                    <field name="framenumber"/>
                    <field name="type"/>
                    <field name="framerevision"/>
                    <field name="mechanic"/>
                </form>
            </field>
        </record>

        <record model="ir.actions.act_window" id="action_bicycle_form">
            <field name="name">bicycle</field>
            <field name="res_model">bicycle</field>
        </record>

        <menuitem name="Bicycle"
          parent="project.menu_project_management"
          id="bicycle_menu_mainform" action="action_bicycle_form"/>
    </data>
</openerp>
Avatar
Discard
Author Best Answer

It seems, that the right field type for pointing from project issues to bicycles is many2many. It works mainly as I want it, with some minor UI issues to work on.

Avatar
Discard
Best Answer

you should use one2many fields.. which will show all the fields in form and tree view both...

Avatar
Discard
Author

Thanks, but this did not work for me. I rephrased my question and added some code to make clear, what I like to do.