GeoDjango and Mixer. 'PointField' has no attribute '_meta'

django, faker, geodjango, python, unit-testing

Solution

`mixer.register` allows you to customize the way you want your data generated. In this case

from django.contrib.gis.geos import Point


mixer.register(
    'app.Location',
    gis=lambda: Point(
        float(mixer.faker.latitude()),
        float(mixer.faker.longitude()),
    ),
)

does the job.

Problem

I have a `Location` model that defined (roughly) like this: ``` from django.contrib.gis.db import models class Location(models.Model): address = models.CharField(max_length=255) gis = models.PointField(null=True) name = models.CharField(max_length=255) ``` Whenever I try to `mixer.blend('app.Location')` I get: ``` AttributeError: Mixer (app.Location): type object 'PointField' has no attribute '_meta' ``` It works when I blend it with the field set to None or Point, but I wonder if there is a way to set it up so it can do it on its own, especially since faker can generate this data.

Original source