from django.db.models import CharField from location_field import forms class BaseLocationField(object): def __init__(self, based_field=None, zoom=2, default=None, *args, **kwargs): self._based_field = based_field self._zoom = zoom self._default = default self.default = default def formfield(self, **kwargs): return super(BaseLocationField, self).formfield( form_class=self.formfield_class, based_field=self._based_field, zoom=self._zoom, default=self._default, **kwargs) class PlainLocationField(BaseLocationField, CharField): formfield_class = forms.PlainLocationField def __init__(self, based_field=None, zoom=None, max_length=63, *args, **kwargs): super(PlainLocationField, self).__init__(based_field=based_field, zoom=zoom, *args, **kwargs) CharField.__init__(self, max_length=max_length, *args, **kwargs) # south compatibility try: from south.modelsinspector import add_introspection_rules add_introspection_rules([], ["^location_field\.models\.PlainLocationField"]) except: pass