解決済み: フィクスチャの django ポイントフィールド値形式

主な問題は、フィクスチャのカスタム ポイントフィールド形式を指定できないことです。

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

ポイントファイル

ポイントファイルは、Web サイトに関する情報を格納するために Django Web フレームワークで使用されるデータ構造です。 ポイントファイルには、URL、ドメイン名、その他のメタデータなど、単一の Web サイトに関する情報が含まれています。

Django の値の形式

Django の値形式は、プロジェクトが準拠する一連の値を定義する方法です。 これは、プロジェクトの哲学を文書化したり、プロジェクトの実行方法を決定するのに役立ちます。

Django で Values 形式を使用するには、まず values というモジュールを作成します。 このモジュールでは、プロジェクトが準拠するすべての値を定義します。 このモジュールには任意のドキュメントを入れることができますが、今のところ、次の内容だけを指定してください。

from django.conf import settings from django.core.management import call_command from django.utils import timezone def main (): # いくつかのグローバル設定を設定します。 設定 。 SETTINGS_MODULE = “values” # このプロジェクトが従う値を定義します。 myvalues = { '行動規範' : 'ハラスメントのない経験をすべての人に提供することをお約束します.' , } call_command ( “echo %s > /etc/hosts” % myvalues [ '行動規範' ], timezone = timezone . now ()) if __name__ == “__main__” : main ()

備品とは

フィクスチャは、Django アプリケーションで使用できるデータベースにデータを格納する方法です。 これらを使用すると、データベース テーブルのフィールドに特定の値を定義し、モデル オブジェクトのインスタンスを作成するときにそれらの値を使用できます。

関連記事:

コメント