Löst: django pointfield värde format för fixturer

Det största problemet är att det inte är möjligt att ange ett anpassat punktfältsformat för fixturer.

I am trying to load a fixture in Django that has a PointField. The value is stored in the database as:
<code>SRID=4326;POINT(1.23456789 1.23456789)
</code>
The fixture file looks like this:
<code>[{'model': 'myapp.MyModel', 'pk': 1, 'fields': {'point': SRID=4326;POINT(1.23456789 1.23456789)}},]
</code>
However, I get the following error when I try to load it: 
<blockquote>
<p>django.core.serializers.base.DeserializationError: Problem installing fixture '/path/to/fixture/file': Could not load myapp_mymodel(1): (point_field) invalid input syntax for type geometry</p>
</blockquote>


A:

 Django fixtures are in JSON format, so you need to use <code>"SRID=4326;POINT(1.23456789 1.23456789)"</code>.  Also, you need to use <code>"point"</code>, not <code>"Point"</code>.  This should work:  

    [{'model': 'myapp_mymodel', 'pk': 1, 'fields': {'point': "SRID=4326;POINT(1 23)"}}]

Pointfiler

En punktfil är en datastruktur som används i Django webbramverk för att lagra information om en webbplats. En punktfil innehåller information om en enskild webbplats, såsom URL, domänens namn och annan metadata.

Värdeformat i Django

Värdeformatet i Django är ett sätt att definiera en uppsättning värden som ditt projekt kommer att följa. Detta kan användas för att dokumentera ditt projekts filosofi, eller för att hjälpa dig fatta beslut om hur ditt projekt ska drivas.

För att använda formatet värden i Django, skapa först en modul som heter värden . I den här modulen kommer du att definiera alla värden som ditt projekt kommer att följa. Du kan lägga vilken dokumentation du vill i den här modulen, men för nu, ge den bara följande innehåll:

från django.conf importera inställningar från django.core.management import call_command från django.utils importera tidszon def main (): # Ställ in några globala inställningar. inställningar . SETTINGS_MODULE = "värden" # Definiera de värden som detta projekt följer. myvalues ​​= { 'uppförandekod' : 'Vi har åtagit oss att tillhandahålla en trakasseringsfri upplevelse för alla.' , } call_command ( “echo %s > /etc/hosts” % myvalues ​​[ 'uppförandekod' ], tidszon = tidszon . nu ()) if __name__ == “__main__” : main ()

Vad är fixturer

Fixturer är ett sätt att lagra data i en databas som kan användas av Django-applikationer. De låter dig definiera specifika värden för fält i en databastabell och sedan använda dessa värden när du skapar instanser av modellobjektet.

Relaterade inlägg:

Lämna en kommentar