CommandError: Unable to serialize database: Error encountered checking Geometry returned from GEOS C function "GEOSWKBReader_read_r".
ERROR django.contrib.gis libgeos.py@80: GEOS_ERROR: ParseException: Unknown WKB type 0
These cryptic messages are caused by using the vanilla Django `model.Manager` with your geo enabled models. This caused me a frew hours of grief trying to figure it out, thinking it's the import data, or an issue with the third party app, etc. but the fix is to just extend your custom model manager from the `gis.models.GeoManager` which is super easy to forget:
from django.contrib.gis.db import models class MyCustomManager(models.GeoManager): """ Additional methods / constants to Base's objects manager - using a GeoManager is fine even for plain models: ``BaseManager.objects.public()`` - all instances that are asccessible through front end """ # Model (db table) wide constants - we put these and not in model definition to avoid circular imports. # one can access these constants through.objects.STATUS_DISABLED or ImageManager.STATUS_DISABLED STATUS_DISABLED = 0 STATUS_ENABLED = 100 STATUS_ARCHIVED = 500 STATUS_CHOICES = ( (STATUS_DISABLED, "Disabled"), (STATUS_ENABLED, "Enabled"), (STATUS_ARCHIVED, "Archived"), ) # We keep status field and custom queries naming a little different as it is not one-to-one mapping in all situations QUERYSET_PUBLIC_KWARGS = {'status__gte': STATUS_ENABLED} # Because you can't yet chain custom manager filters ex. #'public().open()' we provide access this way and we can use directly in 'ForeignKey.limit_choices_to' # workaround - http://stackoverflow.com/questions/2163151/custom-queryset-and-manager-without-breaking-dry def public(self): """ Returns all entries someway accessible through front end site""" return self.filter(**self.QUERYSET_PUBLIC_KWARGS) # def active(self):
If this post hepls you do say thank you by commeting or following me on twitter. .
Comments
Post a Comment