Home > Software design >  Django - Is MODEL.objects.get() lazy?
Django - Is MODEL.objects.get() lazy?

Time:09-30

Does Django know the number of instances of each model?

I was wondering... Since Django does not execute the query to the database until the Queryset is evaluated :

QuerySets are lazy – the act of creating a QuerySet doesn’t involve any database activity. You can stack filters together all day long, and Django won’t actually run the query until the QuerySet is evaluated.

Then how MODEL.objects.get(pk=1), for example, raises DoesNotExist exception when there is no MODEL instance with pk=1, even if I stored it in a variable without printing it for example?

 x = MODEL.objects.get(pk=1)

Traceback (most recent call last):
......
myAPP.models.MODEL.DoesNotExist: MODEL matching query does not exist.

CodePudding user response:

Using objects.get is not "lazy" as it does not return a QuerySet.

Your code: MODEL.objects.get(pk=1) will be evaluated immediately and returned as a model instance rather than a QuerySet.

  • Related