Reputation: 11
On making changes in fields.py file, I am not receiving any warning but the application does not work.
dir:/home/ammy/aamp/lib/python2.7/site-packages/geoposition/fields.py
Code Snippet :
from __future__ import unicode_literals
from django.db import models
from django.utils.six import with_metaclass
from django.utils.translation import ugettext_lazy as _
from django.utils.encoding import smart_text
from . import Geoposition
from .forms import GeopositionField as GeopositionFormField
class GeopositionField(with_metaclass(models.SubfieldBase, models.Field)):
description = _("A geoposition (latitude and longitude)")
def __init__(self, *args, **kwargs):
kwargs['max_length'] = 42
super(GeopositionField, self).__init__(*args, **kwargs)
def get_internal_type(self):
return 'CharField'
def to_python(self, value):
if not value or value == 'None':
return None
if isinstance(value, Geoposition):
return value
if isinstance(value, list):
return Geoposition(value[0], value[1])
# default case is string
value_parts = value.rsplit(',')
try:
latitude = value_parts[0]
except IndexError:
latitude = '0.0'
try:
longitude = value_parts[1]
except IndexError:
longitude = '0.0'
return Geoposition(latitude, longitude)
def get_prep_value(self, value):
return str(value)
def value_to_string(self, obj):
value = self._get_val_from_obj(obj)
return smart_text(value)
def formfield(self, **kwargs):
defaults = {
'form_class': GeopositionFormField
}
defaults.update(kwargs)
return super(GeopositionField, self).formfield(**defaults)
Error :
RemovedInDjango110Warning: SubfieldBase has been deprecated. Use Field.from_db_value instead. return meta(name, bases, d)
Upvotes: 1
Views: 1329
Reputation: 1951
The problem is in this line:
class GeopositionField(with_metaclass(models.SubfieldBase, models.Field)):
Change it to:
class GeopositionField(models.Field):
You'll also have to implement from_db_value() as described here: https://docs.djangoproject.com/en/1.9/howto/custom-model-fields/#converting-values-to-python-objects
Upvotes: 2