0
votes

Supprimer des doublons en raison de la commande par des champs d'un modèle associé

J'ai 2 modèles différents dans la même application xxx

Ce que je veux faire, c'est obtenir tous les livres commandés en descendant la date de sortie RDate Ce que j'ai essayé est:

book.Object.All (). Order_by ('- chapitre__rdate'). Distinct ()

Certains duplicats ont été trouvés dans Résultat, je n'avais que 2 livres ajoutés, alors seul 1 livre était dupliqué. Le résultat était quelque chose comme ceci: Book1, Book2, Book2

J'ai déjà vu la note de ici et im en utilisant SQLite. En utilisant des valeurs (), je ne pourrai pas appeler get_absolute_url () et d'autres méthodes que je veux appeler afin que l'utilisation de valeurs () est hors de question.

Ensuite, j'ai essayé d'annoter le chapitre rdate dans une requête de livre comme celle-ci book.Object.all (). Annotate (bdate = expresswrapper (f ('chapitre__rdate'), sortie_field = DateTimefield ()))). Commande_by ('- Bdate'). Distinct ()

toujours terminé dans le même résultat. Je suis totalement perdue, s'il vous plaît besoin d'aide. Je ne changerai probablement pas à PostgreSQL maintenant, mais je pourrais l'utiliser lorsque je déploierai de l'application, alors je souhaite à la fois des solutions de version SQLite et de la version postgreSQL pour cela si possible. SQLite Solution est absolument nécessaire pour moi puisqu'il est facile à utiliser dans le développement.


0 commentaires

3 Réponses :


1
votes

Vous pouvez essayer ce

Chapter.objects.values('book__title').distinct()


2 commentaires

Ouais, je ne pourrai pas toujours appeler des méthodes comme Get_Absolute_url et d'autres afin de ne pas utiliser.


C'est un autre sujet, non lié à ordre . Regardez: docs.djangoproject.com/fr/ 2.1 / Réf / Modèles / Instances / ...



1
votes

Vous devriez essayer comme ci-dessous:

Book.objects.all().order_by('-chapter__rdate').distinct('chapter__rdate')


2 commentaires

Il est lancé django.db.utils.notsupportederror: Distinct sur les champs n'est pas pris en charge par ce backend de la base de données Pouvez-vous vérifier cela?


S'il vous plaît, essayez après avoir supprimé '-' de votre clause. Book.ObjectS.all (). Ecrand_by ('chapitre__rdate'). Distinct ('Chap Ter__RDate') Veuillez partager des erreurs si elles ne fonctionnent toujours pas.



0
votes

a fonctionné après avoir essayé ceci:

book.ObjectS.all (). Annotate (CH_Date = max ('chapitre__rdate'))). Commande_by ('- CH_Date')

Merci pour toute l'aide.


0 commentaires