web-dev-qa-db-ja.com

配列をDjango model?

Djangoモデルに配列を格納できるかどうか疑問に思っていましたか?

Int(e.g [1,2,3])の配列をフィールドに格納し、特定の配列を検索して、それまたはそれの可能な組み合わせで一致を取得する必要があるため、これを求めています。

私はその配列を文字列として文字列として保存し、何かを検索する必要がある場合は、値を(他のモデルをフィルタリングして取得した)「[」、「]」、「」で連結し、オブジェクトフィルターを生成された文字列。問題は、可能な組み合わせをそれぞれ生成し、一致するまで1つずつフィルタリングする必要があり、これは非効率的であると考えられることです。

それで、私が試してみることができる別のアイデアを教えていただければ幸いです。

私は必ずしもコードを要求しているわけではありません。これを達成する方法についてのアイデアは良いでしょう。

16
Elros Romeo

2つのアドバイスがあります。

1)データベースとしてPostgreSQLを使用している場合は、ArrayFieldを使用します。 ArrayFieldhere の詳細を読むことができます。

2)配列をJSONとしてエンコードし、プレーンストリングとして、またはJSONFieldを使用して here として保存します。

個人的には、オプション番号1をお勧めします。これは、よりクリーンで優れた方法ですが、使用できないデータを保存するために実際に使用しているものによって異なります。

27
Tim Specht

はい、次のように使用できます。

from Django.contrib.postgres.fields import ArrayField
class Board(models.Model):
    pieces = ArrayField(ArrayField(models.IntegerField()))

ただし、データベースにPostgreSQLを使用している場合にのみ使用できます。

8
Exprator

Postgresを使用していない場合は、Djangoの_validate_comma_separated_integer_list_バリデーターをお勧めします。

https://docs.djangoproject.com/en/dev/ref/validators/#Django.core.validators.validate_comma_separated_integer_list

CharField()のバリデーターとして使用します。

3
Chris Conlan