Ir al contenido
Menú
Se marcó esta pregunta
2 Respuestas
273 Vistas

Hi,
i'm learning Odoo and I want to create gantt view on Odoo 18.

I got this error: 

TypeError: 'set' object is not subscriptable

Here's my code


<odoo>

<!-- View: Training Schedule Gantt -->
<record id="view_training_gantt" model="ir.ui.view">
<field name="name">stable.training.gantt</field>
<field name="model">stable.training</field>
<field name="arch" type="xml">
<gantt string="Training Schedule"
date_start="start_date"
date_stop="end_date"
color="color"
progress="progress"
default_scale="day"
duration="duration"
quick_create="1">
<field name="horse_id"/>
<field name="start_date"/>
<field name="end_date"/>
<field name="progress"/>
<field name="duration"/>
<field name="assigned_to"/>
<field name="color" widget="color"/>
</gantt>
</field>
</record>

<!-- Action: Open Training Schedule -->
<record id="open_training_schedule_action" model="ir.actions.act_window">
<field name="name">Training Schedule</field>
<field name="res_model">stable.training</field>
<field name="view_mode">list,form,gantt</field>
</record>

<!-- Menu Item: Training Schedule -->
<menuitem id="menu_training_schedule"
name="Training Schedule"
parent="menu_stable"
action="open_training_schedule_action"
sequence="20"/>
</odoo>

I don't understand my error. 
Need help please


Thank you
Here's the tuto: cybrosys.com/blog/how-to-create-gantt-view-in-odoo-18

Avatar
Descartar
Autor

Hello,

I don't understand were I made this error. I only work on the code in my initial post.
I have enterprise Odoo. It can be there the error ? 

I'm lost.

Mejor respuesta

Hi!

Your XML looks fine:

<field name="view_mode">list,form,gantt</field>

But this error:

TypeError: 'set' object is not subscriptable

means that somewhere in your Python code, you probably used a set like this:

'view_mode': {'list', 'form', 'gantt'} # ❌ wrong

That causes the error because Python sets can’t be accessed by index.

'view_mode': 'list,form,gantt' # ✔️ correct

So double-check if you're creating this action or view in Python — that's likely where the problem is.

Hope that helps!

Avatar
Descartar
Mejor respuesta

Hi,

The error "TypeError: 'set' object is not subscriptable" in Python means you're trying to access elements from a set using indexing, like some_set[0], which is not allowed. A set in Python is an unordered collection of unique items, defined using curly braces {}. For example, {'a', 'b'}, and it doesn’t support indexing because the elements have no fixed order. In Odoo, this error often occurs when a developer mistakenly uses a set {} where a list [] or a string '...' is expected, such as when defining view modes or selection options. Since Odoo may try to access elements by index, using a set causes Python to raise this error. The solution is to replace sets with lists or strings where appropriate.


Hope it helps.

Avatar
Descartar