Dans django, comment vérifier si une entrée existe pour une requête
sc=scorm.objects.filter(Header__id=qp.id)
C'était comme ça que ça se faisait en php
if(mysql_num_rows($resultn)) {
// True condition
}
else {
// False condition
}
python
django
django-views
Ponton
la source
la source
Réponses:
Utilisez
count()
:sc=scorm.objects.filter(Header__id=qp.id) if sc.count() > 0: ...
L'avantage par rapport à par exemple
len()
est que le QuerySet n'est pas encore évalué:En gardant cela à l'esprit, lorsque les QuerySets sont évalués, cela vaut la peine d'être lu.
Si vous utilisez
get()
, par exemplescorm.objects.get(pk=someid)
, et que l'objet n'existe pas, uneObjectDoesNotExist
exception est déclenchée:from django.core.exceptions import ObjectDoesNotExist try: sc = scorm.objects.get(pk=someid) except ObjectDoesNotExist: print ...
Mise à jour: il est également possible d'utiliser
exists()
:if scorm.objects.filter(Header__id=qp.id).exists(): ....
la source
if scorm.objects.filter(Header__id=qp.id).exists()
Depuis Django 1.2, vous pouvez utiliser
exists()
:https://docs.djangoproject.com/en/dev/ref/models/querysets/#exists
if some_queryset.filter(pk=entity_id).exists(): print("Entry contained in queryset")
la source
.objects.get(pk=...)
routecela a fonctionné pour moi!
la source