GeoDjango和Mixer。“PointField”没有属性“_meta”。

3

我有一个位置(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'

当我将它与字段设置为“无”或“点”混合时,它可以正常工作,但我想知道是否有一种方法可以使其自行设置,特别是因为faker可以生成这些数据。


请问您能否提供完整的代码示例,展示您如何调用 mixer.blend 函数? - undefined
@JohnMoutafis 平常的写法是:from mixer.backend.django import mixer; mixer.blend('some.Model')。不过,我刚刚发现了mixer.register - 这正是我一直在寻找的。干杯! - undefined
这个问题似乎与同一个问题有关:https://github.com/klen/mixer/issues/142 - undefined
1个回答

5

mixer.register可以让你自定义数据生成的方式。在这种情况下,

from django.contrib.gis.geos import Point


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

能胜任工作。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接