Django 1.11. J'ai un modèle Je veux obtenir une liste de tous les articles qui n'ont pas été lus . J'utilise déjà déjà comment passer à suivre pour exclure tous les articles dont la combinaison ID / utilisateur se situe dans le article code> et un autre modèle loadarticles code>. q code>: p> lis_articles < / code> table? p> p>
3 Réponses :
Vous pouvez exclure article code> a référé loadarticle code> objets avec l'utilisateur actuel. Article.objects.filter(
length__lt=5000,
).exclude(
readarticle__user=current_user,
)
Cela ne fonctionnerait que si readarticle code> était un champ dans article code>, non? Ou du moins c'est ce que mon message d'erreur me dit.
Non, Readarticle code> est un Readarticle code> référence de la classe, de sorte qu'il vérifie s'il y a des modèles code> loadarticle code> connecté à article code> Pour ce QuerySet code> Il affiche uniquement l'article code> code> sans Readarticle code> Références.
Cela ne fonctionne pas car article code> n'a aucun attribut utilisateur code>
Corrigé. S'il vous plaît voir Modifier la version.
Toujours faux, retournera toujours en queyYset vide. Vous ne pouvez pas être vide et avoir un attribut utilisateur défini en même temps ...
@DirkGroten vous avez raison, je pense que le seul moyen est d'exclure article code> avec ReaderArcticuler code> avec l'utilisateur actuel.
Essayez la requête suivante, substituant un objet utilisateur pour
id__in = [ra.article.id pour RA in ....] code> est un peu plus facile que la double boucle. Mais cela fera deux questions à la base de données plutôt qu'une seule requête.
Vous pouvez également utiliser .values ("id") code> pour ignorer la compréhension de la liste ou probablement id__in = subquery (readarticle.ObjectS.filter (utilisateur =
Étant donné que vous n'avez pas déclaré nom de client code> associé code>, tout ce qui devrait être nécessaire est .exclude code>:
Cela a-t-il énuméré les choix à l'exception?
@Gluepear qui n'est pas possible avec les modèles que vous avez montrés. "Pour faire référence à une relation" inverse ", utilisez simplement le nom minuscule du modèle." (Voir Ce )
Oui, il répertorie l'ID, le nom et la longueur
C'est la bonne réponse, à moins que vos modèles ne soient pas exactement définis comme vous nous prononcent.
@Dirkgoten true, j'ai simplifié mes modèles
Vous recherchez des articles non lus par l'utilisateur actuel ou de ne pas lire par personne?
Désolé de ne pas être clair: Oui, non lu par l'utilisateur actuel.