title: Django ORM: Filter by extra attribute
body: <p>I want to filter some database objects by a concatenated string.</p>
  
  <p>The normal SQL query would be:</p>
  
  <pre><code>SELECT concat(firstName, ' ', name) FROM person WHERE CONCAT(firstName, ' ', name) LIKE "a%";
  </code></pre>
  
  <p>In the model, I have created a manager called PersonObjects:</p>
  
  <pre><code>class PersonObjects(Manager):
      attrs = { 
          'fullName': "CONCAT(firstName, ' ', name)"
      }   
  
      def get_query_set(self):
          return super(PersonObjects, self).get_query_set().extra(
              select=self.attrs)
  </code></pre>
  
  <p>I also configured this in my model:</p>
  
  <pre><code>objects = managers.PersonObjects()
  </code></pre>
  
  <p>Now accessing fullName works for single objects:</p>
  
  <pre><code>&gt;&gt;&gt; p = models.Person.objects.get(pk=4)
  &gt;&gt;&gt; p.fullName
  u'Fred Borminski'
  </code></pre>
  
  <p>But it does not work in a filter:</p>
  
  <pre><code>&gt;&gt;&gt; p = models.Person.objects.filter(fullName__startswith='Alexei')
  Traceback (most recent call last):
    File "&lt;console&gt;", line 1, in &lt;module&gt;
    File "/usr/lib/python2.7/site-packages/django/db/models/manager.py", line 141, in filter
      return self.get_query_set().filter(*args, **kwargs)
    File "/usr/lib/python2.7/site-packages/django/db/models/query.py", line 550, in filter
      return self._filter_or_exclude(False, *args, **kwargs)
    File "/usr/lib/python2.7/site-packages/django/db/models/query.py", line 568, in _filter_or_exclude
      clone.query.add_q(Q(*args, **kwargs))
    File "/usr/lib/python2.7/site-packages/django/db/models/sql/query.py", line 1128, in add_q
      can_reuse=used_aliases)
    File "/usr/lib/python2.7/site-packages/django/db/models/sql/query.py", line 1026, in add_filter
      negate=negate, process_extras=process_extras)
    File "/usr/lib/python2.7/site-packages/django/db/models/sql/query.py", line 1191, in setup_joins
      "Choices are: %s" % (name, ", ".join(names)))
  FieldError: Cannot resolve keyword 'fullName' into field. Choices are: firstName, gender, name, (...)
  </code></pre>
  
  <p>Is this a bug or a feature? How can I fix this?</p>
  
  <p>Thanks.</p>