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
Répondre
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)...']>
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 %}
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
Vrai, quand vous avez plusieurs objets avec des conditions communes que vous ne voulez pas montrer. – zaidfazil
'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
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
.objects.all(). exclude (...) –