¿Entre consultas equivalentes en el almacén de datos de App Engine?

Tengo un modelo que contiene rangos de direcciones IP, similar a este:

class Country(db.Model):
  begin_ipnum = db.IntegerProperty()
  end_ipnum = db.IntegerProperty()

En una base de datos SQL, podría encontrar filas que contuvieran una IP en un cierto rango como este:

SELECT * FROM Country WHERE ipnum BETWEEN begin_ipnum AND end_ipnum

o esto:

SELECT * FROM Country WHERE begin_ipnum < ipnum AND end_ipnum > ipnum

Lamentablemente, GQL solo permite filtros de desigualdad en una propiedad y no admiteBETWEEN sintaxis. ¿Cómo puedo evitar esto y construir una consulta equivalente a estas en App Engine?

Además, puede unListProperty estar 'en vivo' o tiene que calcularse cuando se crea el registro?

pregunta actualizada con una primera puñalada en una solución:

Entonces, según la respuesta de David a continuación y artículos como estos:

http://appengine-cookbook.appspot.com/recipe/custom-model-properties-are-cute/

Estoy tratando de agregar un campo personalizado a mi modelo así:

class IpRangeProperty(db.Property):
  def __init__(self, begin=None, end=None, **kwargs):
    if not isinstance(begin, db.IntegerProperty) or not isinstance(end, db.IntegerProperty):
        raise TypeError('Begin and End must be Integers.')
    self.begin = begin
    self.end = end
    super(IpRangeProperty, self).__init__(self.begin, self.end, **kwargs)

  def get_value_for_datastore(self, model_instance):
    begin = self.begin.get_value_for_datastore(model_instance)
    end = self.end.get_value_for_datastore(model_instance)
    if begin is not None and end is not None:
      return range(begin, end)

class Country(db.Model):
  begin_ipnum = db.IntegerProperty()
  end_ipnum = db.IntegerProperty()
  ip_range = IpRangeProperty(begin=begin_ipnum, end=end_ipnum)

El pensamiento es que después de agregar la propiedad personalizada, puedo importar mi conjunto de datos tal cual y luego ejecutar consultas basadas en ListProperty de la siguiente manera:

q = Country.gql('WHERE ip_range = :1', my_num_ipaddress)

Sin embargo, cuando intento insertar nuevos objetos de Country, esto falla, compilando sobre no poder crear el nombre:

...
File "/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/ext/db/__init__.py", line 619, in _attr_name
return '_' + self.name
TypeError: cannot concatenate 'str' and 'IntegerProperty' objects

Traté de definir unattr_name método para la nueva propiedad o simplemente configuraciónself.name pero eso no parece ayudar. ¿Atascado o yendo en la dirección correcta?

Respuestas a la pregunta(3)

Su respuesta a la pregunta