Rešeno: format vrednosti django pointfield za napeljave

Glavna težava je, da ni mogoče določiti oblike točkovnega polja po meri za napeljave.

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)"}}]

Pointfiles

Pointfile je podatkovna struktura, ki se uporablja v spletnem ogrodju Django za shranjevanje informacij o spletnem mestu. Točkovna datoteka vsebuje informacije o posameznem spletnem mestu, kot so URL, ime domene in drugi metapodatki.

Oblika vrednosti v Djangu

Format vrednosti v Djangu je način za definiranje niza vrednosti, ki se jih bo držal vaš projekt. To lahko uporabite za dokumentiranje filozofije vašega projekta ali za pomoč pri odločanju o tem, kako naj se izvaja vaš projekt.

Če želite uporabiti format vrednosti v Djangu, najprej ustvarite modul z imenom values. V tem modulu boste definirali vse vrednosti, ki jih bo upošteval vaš projekt. V ta modul lahko vstavite katero koli dokumentacijo, ki jo želite, vendar ji za zdaj samo dajte naslednjo vsebino:

from django.conf import settings from django.core.management import call_command from django.utils import timezone def main (): # Nastavite nekatere globalne nastavitve. nastavitve. SETTINGS_MODULE = “values” # Določite vrednosti, ki jim ta projekt sledi. myvalues ​​= { 'kodeks ravnanja' : 'Zavezani smo, da vsem zagotovimo izkušnjo brez nadlegovanja.' , } call_command ( “echo %s > /etc/hosts” % myvalues ​​[ 'kodeks ravnanja' ], timezone = timezone . now ()) if __name__ == “__main__” : main ()

Kaj so napeljave

Fiksture so način shranjevanja podatkov v bazi podatkov, ki jo lahko uporabljajo aplikacije Django. Omogočajo vam, da definirate specifične vrednosti za polja v tabeli zbirke podatkov in nato uporabite te vrednosti, ko ustvarite primerke modela modela.

Podobni objav:

Pustite komentar