title: How to prevent extra query for this field in Django?
body: <p>I have models like this:</p>
  <pre><code>class City(models.Model):
      some_field = models.ForeignKey('self')
      name = models.CharField(max_length=100)
  
  class Author(models.Model):
      city = models.ForeignKey(City)
      # other fields
  
      def get_some_field(self):
          return self.city.some_field
      
      some_field = cached_property(get_some_field, name='some_field')
  </code></pre>
  <p>I fetch Author queryset something like this:</p>
  <pre><code>author_qs = Author.objects.filter(**some_filter).select_related('city')
  </code></pre>
  <p>Now after fetching the queryset, I do something like this:</p>
  <pre><code>city_name = author_qs.some_field.name
  </code></pre>
  <p>But this line is querying the database again for City model. How can I prevent this extra query, and get city_name with previous query only.</p>
  <p>P.S. I cannot directly get <code>author_qs.city.name</code>. I require it to call from <code>some_field</code> only</p>