Ma question dit tout. J'ai déjà fait un contrôleur pour rechercher tous les enregistrements d'un modèle spécifique.

Maintenant, je veux rechercher un seul enregistrement (par son identifiant) du même modèle.

Mon contrôleur pour tous les enregistrements est le suivant:

@http.route('/get_sales', type='json', auth='user')
    def get_sales(self):
        sales_rec = request.env['sale.order'].search([])
        sales = []
        for rec in sales_rec:
            vals = {
                'id': rec.id,
                'name': rec.name,
                'partner_id': rec.partner_id,
            }
            sales.append(vals)
        data = {'status': 200, 'response': sales, 'message': 'All sales returned'}
        return data

Donc, ce que je dois ajouter pour obtenir un seul enregistrement en fonction de son identifiant.

Merci.

0
southernegro 28 août 2020 à 00:43

2 réponses

Meilleure réponse

Tout d'abord, changez la route de votre contrôleur comme ceci:

@http.route(['/get_sales', '/get_sales/<int:order_id>'], type='json', auth='user')

En faisant cela, vous avez maintenant la possibilité d'appeler votre itinéraire avec ou sans order_id.

Deuxièmement, changez votre méthode comme ceci:

def get_sales(self, order_id=None):

Vous pouvez maintenant ajouter de la logique à votre méthode:

if order_id:
    domain = [('id', '=', order_id)]
else:
    domain = []
sales_rec = request.env['sale.order'].search(domain)
0
adekock11 28 août 2020 à 11:41

sale_rec = request.env['sale.order'].search([('id','=',YOURID)])

Ou

sale_rec = request.env['sale.order'].browse(YOURID)

Les deux renvoient l'objet sélectionné

0
Plaoo 28 août 2020 à 06:59