2017-09-14 4 views
2

J'ai un ensemble de requêtes créé par Profile.objects.all(). Je veux l'imprimer en template sauf une de ses lignes. Comment puis-je le faire en template? ou si ce n'est pas possible dans le modèle, comment puis-je le faire en vue?Comment supprimer un objet d'un autre objet dans django? - python

+1

'Profile.objects.all()' est pas un objet, il est un 'queryset'. Pourriez-vous s'il vous plaît être plus précis de votre problème/problème? – zaidfazil

+0

ouais tu as raison, c'est un queryset. Je veux imprimer toutes ses lignes sauf l'une d'entre elles. par exemple s'il y a 5 lignes dans la table de base de données, je les prends toutes par 'Profile.objects.all()', mais je veux imprimer les lignes 1 à 4 et je ne veux pas imprimer les lignes numéro 5. – msln

+0

.objects.all(). exclude (...) –

Répondre

0

Vous pouvez utiliser .exclude() queryset comme ceci:

YourObjet = Profile.objects.exclude(**kwargs) 

Cette Django requête renvoie tous les objets votre modèle sans les objets exclus.

Vous avez la documentation de django là: .exclude()

Exemple:

MyObject = Individu.objects.all() 

Retour:

<QuerySet [<Individu: 1 19312STRASBOURG-402541 JUNGBLUTH Valentin>, <Individu: 2 18812STRASBOURG-797846 ARNOUD Laurent>, <Individu: 3 None TEST Test>, '...(remaining elements truncated)...']>

MyObject = Individu.objects.exclude(id="2") 

Retour:

<QuerySet [<Individu: 1 19312STRASBOURG-402541 JUNGBLUTH Valentin>, <Individu: 3 None TEST Test>, '...(remaining elements truncated)...']>

+0

n'est-il pas possible de le faire dans le modèle? – msln

+0

Il suffit d'ajouter 'YourObject' dans le dictionnaire contextuel de votre vue. Puis appelez la variable 'YourObject' dans votre template et cela fonctionne – Deadpool

+0

J'ai ajouté un exemple;) – Deadpool

1

Tout d'abord Profile.objects.all() est un QuerySet. Vous pouvez imprimer la méthode __str__() de chaque instance dans le QuerySet simplement en itérant à travers elle.

Si vous ne voulez pas négliger le dernier, vous pouvez quelque chose comme ça,

{% for item in profiles %} 

    {% if not forloop.last %} 

     {{ item }} 

    {% endif %} 

{% endfor %} 
+1

Ce n'est pas la meilleure réponse. Parce que cela fonctionne pour le dernier objet mais pas l'objet avec ID = 10 avec 1.000.000 objets. Vous devez utiliser '.exclude()' pour le faire. – Deadpool

+0

Vrai, quand vous avez plusieurs objets avec des conditions communes que vous ne voulez pas montrer. – zaidfazil