0

私はdjangoでデータベースを構築していますが、少し障害に遭遇しました。

私はこのようなことをしようとしています。オブジェクトがあり、そのオブジェクトには2つのインデックスがあります。各インデックスには2つの値があります。これは紛らわしいように聞こえるかもしれませんので、このように言いましょう。

ブックにはインデックスアルファがあり、インデックスベータインデックスアルファは位置(4,3)にありますインデックスベータは位置(7,4)
にあります位置は整数形式ではなく別々に格納されていることに注意してください( "43ではなく(4,3) ")

これをDBに実装するために、インデックスに外部キーを使用して、インデックスとブックのクラスを作成しました。そのようです:

class index(models.Model):
    book = models.ForeignKey(Books)
    int1 = models.IntegerField()
    int2 = models.IntegerField()

しかし、私はこれを単純化したかったのです。後でインデックスクラスの他の用途を提供しようとすると、面倒になります。(特に本のクラスでは使用しません)

理想的には、次のように、後で本のクラスで自由に使用できるカスタムの複数値フィールドを作成します。

class Book(models.Model):
      title=...
      publisher= ...
      indexA=customMulti-valueField()

これは可能ですか?そのようなフィールドをどのように定義しますか?カスタムフィールドの作成に関するdjangoのドキュメントを見てきましたが、それで問題が解決するとは思いません。

ここでの主な関心事は、Pythonタプルのようなものを格納できるmysqlデータ型を持つことです。

ありがとう。

4

1 に答える 1

0

インデックスが2つしかない場合は、それらをIntegerFieldsに格納し、次のように両方を返すメソッドを作成します。

class Book(models.Model):
    title=...
    publisher= ...
    indexAX=models.IntegerField()
    indexAY=models.IntegerField()
    indexBX=models.IntegerField()
    indexBY=models.IntegerField()

    def indexA(self):
        return self.indexAX, self.indexAY

    def indexB(self):
        return self.indexBX, self.indexBY

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

b = Book.objects.create('Title', 'Publisher', 1, 2, 3, 4)
ax, ay = b.indexA()
bx, by = b.indexB()
于 2012-04-05T17:44:00.097 に答える