2017-05-08 73 views
0

我有一個定義的(大約)一Location模式:GeoDjango和混合器。 'PointField' 有這樣的沒有屬性 '_meta'

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可以生成這些數據。

+0

您可以提供關於如何調用'mixer.blend'的完整代碼示例嗎? –

+0

@JohnMoutafis通常:從mixer.backend.django進口攪拌機; mixer.blend( 'some.Model')'。無論如何。我剛剛發現了'mixer.register' - 這正是我所期待的。乾杯! – Igonato

回答

0

mixer.register允許您自定義數據生成方式。在這種情況下,

from django.contrib.gis.geos import Point 


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

完成這項工作。

相關問題