Как использовать отношения «многие ко многим» в odoo mobile

Я разрабатываю приложение для Android на основе платформы Odoo. Мне нужно отобразить листья Compensatory-Off, которые являются типом поля Many-To-Many, когда когда-либо пользователь выбирает тип отпуска, называемый компенсационным.

Я пробовал некоторый код, но я получаю сообщение об ошибке, когда когда-либо привязываю свое поле Many-To-Many к XML:

Это код, который я пробовал в xml

  <odoo.controls.OField
                        android:id = "@+id/com_off_ids"
                        android:layout_width = "match_parent"
                        android:layout_height = "wrap_content"
                        android:layout_weight = "0.5"
                        app:fieldName = "compoff_ids"
                        app:fieldTextAppearance = "?android:textAppearanceMedium"/>

Это модель odoo для HrHolidays.

OColumn employee_id = new OColumn("Employee", HrEmployee.class, OColumn.RelationType.ManyToOne);
    OColumn department_id = new OColumn("Department", HrDepartment.class, OColumn.RelationType.ManyToOne);
    OColumn company_id = new OColumn("Company", ResCompany.class, OColumn.RelationType.ManyToOne);
    OColumn holiday_type = new OColumn("Mode", OSelection.class).addSelection("employee", "By Employee").addSelection("category", "By Employee Tag");
    OColumn type = new OColumn("Type", OSelection.class).addSelection("remove", "Remove").addSelection("add", "Add").setDefaultValue("remove");
    @Odoo.Domain("[['line_id', '=', @leave_year_id]]")
    @Odoo.onChange(method = "partnerIdOnChange")
    OColumn holiday_status_id = new OColumn("Leave Type", HrHolidayStatus.class, OColumn.RelationType.ManyToOne);
    OColumn leave_year_id = new OColumn("Leave Year", LeaveYear.class, OColumn.RelationType.ManyToOne);
    OColumn compoff_ids = new OColumn("",CompLeaveRel.class, OColumn.RelationType.ManyToMany).setRelBaseColumn("leave_id").setRelRelationColumn("comp_id").setRelTableName("comp_leave_rel");

Здесь в приведенном выше коде поле «Compoff_ids» — это поле «многие ко многим», которое мне нужно для хранения значений.

Это поля модели CompLeaveRel.

OColumn name = new OColumn("", OVarchar.class);
OColumn leave_id = new OColumn("", OVarchar.class);
OColumn comp_id = new OColumn("",OVarchar.class);

Это ошибка, которую я получаю, когда привязываю свой OColum к виджету XML:

java.lang.NullPointerException: Attempt to invoke virtual method 'int odoo.controls.OField$FieldType.ordinal()' on a null object reference
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2778)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2856)
        at android.app.ActivityThread.-wrap11(Unknown Source:0)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1589)
        at android.os.Handler.dispatchMessage(Handler.java:106)
        at android.os.Looper.loop(Looper.java:164)
        at android.app.ActivityThread.main(ActivityThread.java:6494)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)
     Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'int odoo.controls.OField$FieldType.ordinal()' on a null object reference

Может ли кто-нибудь рассказать мне, как использовать и получать данные для полей «многие ко многим» в мобильной среде odoo.

Я был заблокирован здесь с последних двух дней

Извините за мой английский.

1
0
151
1

Ответы 1

Вы можете определить столбец как:

OColumn column_name = new OColumn("Description", table_name.class, OColumn.RelationType.ManyToMany);

и используйте ту же структуру, что и в приложении CRM, чтобы показать поле one2many (Расширяемый список и его Адаптер) или как простые теги.

Другие вопросы по теме