相关疑难解决方法(0)

使用Factory Boy和GeoDjango PointFields

我正在为我刚开始的新GeoDjango项目编写测试.通常我使用Factory BoyFaker来创建用于测试的模型实例.但是我不清楚如何模拟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 gis django geodjango factory-boy

5
推荐指数
2
解决办法
917
查看次数

在factory_boy中更改默认的伪造者语言环境

如何为所有工厂在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)

python django factory-boy

5
推荐指数
2
解决办法
1131
查看次数

标签 统计

django ×2

factory-boy ×2

python ×2

geodjango ×1

gis ×1