0

私はDjangoを初めて使用しています(そしてほとんどDDBBを使用しています)。QUESTIONS と SIGNATURES の 2 つのモデルを作成しています。質問の署名に対応するデータベースでいくつかの検索を行いたいと思いました。たとえば、履歴署名 (または生物学など) の 10 の質問を検索します。

主な問題は、すべての質問が異なる署名 (たとえば、Math と Phisycs) に属する可能性があることです。

署名の情報を提供する QUESTIONS モデルの整数フィールドを考えました。たとえば、署名のバイナリ表現: 1010001 で、すべての位置が関連付けられている署名の存在 (または非存在) を示します。これに関する問題は、BBDD を調べるだけでは不十分であり、署名が関連付けられているかどうかを判断する前に計算を行う必要があることです。

この操作は検索を遅くしすぎますか?

manyToMany フィールドについて聞いたことがありますが、これはこの状況を解決するためのより良いアプローチでしょうか?

コメントしてくれてありがとう

4

1 に答える 1

0

これは、多対多フィールドを使用することで簡単に解決できます。多対多フィールドが行うことは、関連付けを結合するための 2 つ目のテーブルを作成することです。たとえば、

class Signature(models.Model):
    signature=models.CharField()  

class Question(models.Model):
    question=models.CharField()
    signatures=models.ManyToManyField(Signature)

質問のテーブルと署名のテーブルに加えて、appname_question_signature という 3 番目のテーブルが作成され、質問テーブルの主キーが署名にマップされます。このテーブルには複数のエントリを含めることができるため、任意の質問を任意の数の署名にマッピングでき、その逆も可能です。

そして、あなたが行くすべての歴史の質問を照会するには

sig=Signature.objects.get(signature="History")
questions=Question.objects.get(signatures=sig)
于 2012-08-07T08:31:16.150 に答える