【发布时间】:2015-12-26 01:02:27
【问题描述】:
我正在为我开始的一个新 GeoDjango 项目编写测试。通常我使用Factory Boy 和Faker 来创建模型实例进行测试。但是,我不清楚如何模拟 GeoDjango PointField 字段。查看Spacialite 中的记录时,它显示为二进制blob。
我对 GIS 完全陌生,对如何在 Django 中为 PointFields 创建工厂有点困惑。
# models.py
from django.contrib.gis.db import models
class Place(models.Model):
name = models.CharField(max_length=255)
location = models.PointField(blank=True, null=True)
objects = models.GeoManager()
def __str__(self):
return "%s" % self.name
# factories.py
import factory
from faker import Factory as FakerFactory
from . import models
faker = FakerFactory.create()
class PlaceFactory(factory.django.DjangoModelFactory):
class Meta:
model = models.Place
name = factory.LazyAttribute(lambda x: faker.name())
#location = What do I do?
【问题讨论】:
-
如果您不喜欢 Factory Boy,请查看 model-mommy 的扩展(现在我首选的用于创建测试记录的库):github.com/sigma-geosistemas/mommy_spatial_generators
标签: python django gis geodjango factory-boy