title: django - when is .objects.get() evaluated?
body: <p>Suppose i have : </p>
  
  <pre><code>class Library(models.Model):
      name = models.CharField(max_length = 100)
  
  class Books(models.Model):
      library = models.ForeignKey(Library)
      book = models.CharField(max_length = 100)
  </code></pre>
  
  <p>I want to create a new <code>Books</code>, we know we can fill the library on <code>Books</code> with just <code>Library</code>'s id, but we can also use instance of <code>Library</code>. My question is, is it better if we just provide the id? If i want to use the instance, then i have to evaluate using <code>.get()</code>, then does it hit the database?</p>
  
  <p>Additional question : From the docs, queryset are lazy, it does not hit the database till evaluated, so when does queryset evaluated?</p>