Projet

Général

Profil

Development #59103

La recherche full text sur les items dans la vue des transactions provoque des ligne en doublon

Ajouté par Benjamin Dauvergne il y a plus de 2 ans. Mis à jour il y a plus de 2 ans.

Statut:
Fermé
Priorité:
Normal
Assigné à:
Version cible:
-
Début:
29 novembre 2021
Echéance:
% réalisé:

0%

Temps estimé:
Patch proposed:
Oui
Planning:
Non

Description

Cf. une remarque dans #58853.

Le fait de recherche dans des objets liés par une table n-n provoque la multiplication des lignes de la table principale (ici Transaction lié à BasketItem par un champ M2M), dans ce code de TransactionListView.get_queryset() :

        qs = (
            Transaction.objects.select_related('user')
            .prefetch_related(Prefetch('items', to_attr='prefetched_items'))
            .filter(status__in=(eopayment.PAID, eopayment.ACCEPTED))
            .order_by('-start_date')
        )
        query, regie = None, None
        if self.form.is_valid():
            query = self.form.cleaned_data['q']
            regie = self.form.cleaned_data['regie']
        if regie:
            qs = qs.filter(regie=regie)
        if query:
            try:
                date = date_parser.parse(query, dayfirst=True)
            except Exception:
                qs = qs.filter(
                    Q(order_id=query) | Q(bank_transaction_id=query) | Q(items__subject__icontains=query)
                )

C'est Q(items__subject__icontains=query) qui provoque une jointure avec la table M2M. Il faut ajouter .distinct() pour s'en protéger.


Fichiers

Révisions associées

Révision d87a1895 (diff)
Ajouté par Benjamin Dauvergne il y a plus de 2 ans

lingo: use distinct when querying transactions through items (#59103)

Historique

#1

Mis à jour par Benjamin Dauvergne il y a plus de 2 ans

  • Assigné à mis à Benjamin Dauvergne
#2

Mis à jour par Benjamin Dauvergne il y a plus de 2 ans

#3

Mis à jour par Serghei Mihai (congés, retour 15/05) il y a plus de 2 ans

  • Statut changé de Solution proposée à Solution validée
#4

Mis à jour par Benjamin Dauvergne il y a plus de 2 ans

  • Statut changé de Solution validée à Résolu (à déployer)
commit d87a1895008115fecf898fc23905275d116ce0eb
Author: Benjamin Dauvergne <bdauvergne@entrouvert.com>
Date:   Mon Nov 29 23:04:51 2021 +0100

    lingo: use distinct when querying transactions through items (#59103)
#5

Mis à jour par Frédéric Péters il y a plus de 2 ans

  • Statut changé de Résolu (à déployer) à Solution déployée

Formats disponibles : Atom PDF