我正在为我刚开始的新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
Run Code Online (Sandbox Code Playgroud)
# 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?
Run Code Online (Sandbox Code Playgroud) 如何为所有工厂在Python的factory_boy中设置默认语言环境?
在docs中说应该给它设置,factory.Faker.override_default_locale但这对我的伪造者没有任何帮助...
import factory
from app.models import Example
from custom_fakers import CustomFakers
# I use custom fakers, this indeed are added
factory.Faker.add_provider(CustomFakers)
# But not default locales
factory.Faker.override_default_locale('es_ES')
class ExampleFactory(factory.django.DjangoModelFactory):
class Meta:
model = Example
name = factory.Faker('first_name')
>>> from example import ExampleFactory
>>> e1 = ExampleFactory()
>>> e1.name
>>> u'Chad'
Run Code Online (Sandbox Code Playgroud)