Je travaille dans un module d'exemple et je crée une vue dans laquelle je voulais afficher un enregistrement en fonction de critères et de plusieurs modèles. Qui sont déjà en cours de création.Odoo - la fonction init ne fonctionne pas
Pending Accounts
class PendingAccounts(models.Model):
_name = 'amgl.pending_accounts'
_description = 'Pending Account'
name = fields.Char()
first_name = fields.Char(string="First Name")
last_name = fields.Char(string="Last Name")
quantity_expected = fields.Float(string="Quantity Expected")
quantity_received = fields.Float(string="Quantity Received")
possible_reason = fields.Many2one('amgl.product_reason',string='Possible Reason')
possible_solution = fields.Many2one('amgl.product_solution', string='Possible Solution')
notes = fields.Html(string='Notes')
@api.model_cr
def init(self):
tools.drop_view_if_exists(self._cr, 'pending_accounts')
self._cr.execute("""
CREATE VIEW pending_accounts AS (
SELECT c.name AS first_name,
c.last_name AS last_name,
o.total_received_qty AS quantity_received,
o.total_qty AS quantity_expected
FROM amgl_order AS o
INNER JOIN amgl_customer AS c ON c.id = o.customer_id
WHERE o.is_pending = True
)""")
Pending Accounts View
<odoo>
<data>
<record id="amgl.pending_accounts_action_window" model="ir.actions.act_window">
<field name="name">Pending Accounts</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">amgl.pending_accounts</field>
<field name="view_mode">tree,form</field>
<field name="help" type="html">
<p class="oe_view_nocontent_create">
<!-- Add Text Here -->
</p><p>
<!-- More details about what a user can do with this object will be OK -->
</p>
</field>
</record>
<record id="amgl.pending_accounts_form" model="ir.ui.view">
<field name="name">Pending Accounts Form</field>
<field name="model">amgl.pending_accounts</field>
<field name="arch" type="xml">
<form string="Pending Inventories">
<sheet>
<group>
<field name="first_name"/>
<field name="last_name"/>
<field name="quantity_expected"/>
<field name="quantity_received"/>
<field name="possible_reason"/>
<field name="possible_solution"/>
<field name="notes"/>
</group>
</sheet>
</form>
</field>
</record>
<record id="amgl.pending_accounts_tree" model="ir.ui.view">
<field name="name">Pending Account</field>
<field name="model">amgl.pending_accounts</field>
<field name="arch" type="xml">
<tree string="Pending Accounts">
<field name="first_name"/>
<field name="last_name"/>
<field name="quantity_expected"/>
<field name="quantity_received"/>
<field name="possible_reason"/>
<field name="possible_solution"/>
<field name="notes"/>
</tree>
</field>
</record>
</data>
</odoo>
donc j'ai créé un modèle et ajouté requête pour obtenir tous les enregistrements dans init
méthode du modèle. Mais il ne montre aucun enregistrement dans l'arborescence. J'exécute également la requête dans pgadmin et il y a des enregistrements venant contre cette requête comme montré dans la pièce jointe.
Je suis face à l'erreur suivante maintenant,
Traceback (most recent call last):
File "/home/ahsan/v10/odoo/http.py", line 638, in _handle_exception
return super(JsonRequest, self)._handle_exception(exception)
File "/home/ahsan/v10/odoo/http.py", line 675, in dispatch
result = self._call_function(**self.params)
File "/home/ahsan/v10/odoo/http.py", line 331, in _call_function
return checked_call(self.db, *args, **kwargs)
File "/home/ahsan/v10/odoo/service/model.py", line 101, in wrapper
return f(dbname, *args, **kwargs)
File "/home/ahsan/v10/odoo/http.py", line 324, in checked_call
result = self.endpoint(*a, **kw)
File "/home/ahsan/v10/odoo/http.py", line 933, in __call__
return self.method(*args, **kw)
File "/home/ahsan/v10/odoo/http.py", line 504, in response_wrap
response = f(*args, **kw)
File "/home/ahsan/v10/addons/web/controllers/main.py", line 827, in
search_read
return self.do_search_read(model, fields, offset, limit, domain, sort)
File "/home/ahsan/v10/addons/web/controllers/main.py", line 849, in
do_search_read
offset=offset or 0, limit=limit or False, order=sort or False)
File "/home/ahsan/v10/odoo/models.py", line 4681, in search_read
records = self.search(domain or [], offset=offset, limit=limit, order=order)
File "/home/ahsan/v10/odoo/models.py", line 1518, in search
res = self._search(args, offset=offset, limit=limit, order=order, count=count)
File "/home/ahsan/v10/odoo/models.py", line 4242, in _search
self._cr.execute(query_str, where_clause_params)
File "/home/ahsan/v10/odoo/sql_db.py", line 141, in wrapper
return f(self, *args, **kwargs)
File "/home/ahsan/v10/odoo/sql_db.py", line 218, in execute
res = self._obj.execute(query, params)
ProgrammingError: column amgl_pending_accounts.id does not exist
LINE 1: SELECT "amgl_pending_accounts".id FROM "amgl_pending_account...
je pense que son ne fonctionne pas aussi parce que maintenant je reçois erreur sur le champ suivant 'ProgrammingError: colonne amgl_pending_accounts.possible_solution n'existe pas LINE 1: ... amgl_pending_accounts". "last_name" comme "last_name", "amgl_pend ...' – Ancient
Le premier numéro était là en raison du champ d'identification, maintenant me donner une erreur complète, je vais vous dire la raison –
S'il vous plaît consulter la réponse mise à jour, il y avait une erreur dans ma requête. J'ai oublié de mentionner le groupe par. –