GeoDjango 和混音器。 'PointField' 没有属性“_meta”

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

我有一个 Location 模型(大致)定义如下:

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)

每当我尝试 mixer.blend('app.Location') 我得到:

AttributeError: Mixer (app.Location): type object 'PointField' has no attribute '_meta'

当我将它与设置为 None 或 Point 的字段混合时它可以工作,但我想知道是否有办法设置它以便它可以自己完成,特别是因为 faker 可以生成这个数据。

mixer.register 允许您自定义生成数据的方式。在这种情况下

from django.contrib.gis.geos import Point


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

完成任务。