2

Je viens de python monde du framework Django et je me demande s'il est possible dans le contrôleur odoo de rendre le modèle-forme comme dans Django. Par exemple:odoo auto générer modelform dans le contrôleur

class PartnerController(http.Controller): 
    @http.route('partner/create') 
    def create_form(self, **kw): 
     model = request.registry['res.partner'] 
     form = auto generate html form view for the model 
     return form 

Ou peut-être une façon de montrer automatiquement un ir.ui.view déjà existant sur le site Web du contrôleur.

L'idée est de réutiliser des vues déjà définies et/ou de ne pas réécrire des vues pour chaque modèle à chaque fois.

Je connais déjà le constructeur de site Web mais je veux quelque chose qui sera facile à ajouter dans un module.

Est-ce que quelqu'un fait déjà quelque chose comme ça dans odoo8/9?
Merci d'avance.

Répondre

3

Les contrôleurs Odoo peuvent interroger des données, puis rendre des modèles en utilisant ces données. Cela se fait à l'aide:

return request.website.render("<XMLId-for-my-QWeb-view", {<data dict>}) 

Par exemple, vous pouvez consulter la page du site Job List:

# Render page 
    return request.website.render("website_hr_recruitment.index", { 
     'jobs': jobs, 
     'countries': countries, 
     'departments': departments, 
     'offices': offices, 
     'country_id': country, 
     'department_id': department, 
     'office_id': office_id, 
    }) 

Le dictionnaire de données est alors utilisable dans le modèle QWEB être rendu. Dans cet exemple, le modèle utilisé est website_hr_recruitment.index.

Notez que vous devez utiliser les vues QWeb. AFAIK formes régulières et les vues de la liste ne peuvent pas être dans le frontend du site Web.

+0

hi @daniel Interrogez-vous sur "model-model réutilisable" comme dans django, d'après ce que je comprends, ODOO n'a pas de modèle de formulaire générique pour tous les modèles, qu'en penses-tu? – prakash

+0

QWeb Les modèles peuvent utiliser d'autres modèles, par exemple en utilisant la directive 't-call'. Donc je dirais qu'une fonctionnalité équivalente est disponible. –

+0

Merci @Daniel pour l'exemple. si je comprends bien. dans odoo je ne peux que créer des vues différentes qui peuvent être réutilisées dans d'autres vues via "t-call" non? Est-il possible de laisser odoo générer automatiquement un formulaire pour moi? Comme je comprends, je peux juste appeler un existant. – justice