I have a model like this:
class Users(db.Model):
email = db.EmailProperty(required=True, indexed=True)
user_name = db.StringProperty(required=True, indexed=True)
api_key = db.StringProperty(required=False, indexed=False)
active = db.BooleanProperty(required=True, indexed=False)
real_name = db.StringProperty(required=False, indexed=False)
...etc
When I tried to make a query like this:
user = db.GqlQuery("SELECT email, api_key, active FROM Users WHERE user_name = :1", username).get()
It’s returning None, but when I use this query:
user = db.GqlQuery("SELECT * FROM Users WHERE user_name = :1", username).get()
It’s ok, returns everything. But why I can’t use the first query?
You cannot project unindexed properties. As stated in the documentation
You can find out what indexes are required by running your query in the Datastore Viewer in the Admin Console.