2017-07-27 15 views
0

のインスタンスのセット/リストを作るためのFIELDTYPEは、これらの3つのモデルを考えてみましょう:Djangoのモデル:他のモデル

class Statement(models.Model): 
    statement_id = models.CharField(max_length=200) 
    title = models.CharField(max_length=200) 
    statement-keywords = ? 
    statement-contexts = ? 

class Keyword(models.Model): 
    word = models.CharField(max_length=200) 
    statement = models.ManyToManyField(Statement) 
    def __str__(self): 
     return self.word 

@python_2_unicode_compatible 
class Context(models.Model): 
    context_word = models.CharField(max_length=200) 
    keyword = models.ManyToManyField(Keyword) 
    statement = models.ManyToManyField(Statement) 
    def __str__(self): 
     return self.context_word 

すべての声明は、関連するキーワードやコンテキストのセットを持つことになっています。私はこのウェブサイトの管理インターフェースを中心に作業しており、誰かが新しいページを更新したり送信したりするために同じページにキーワードやコンテキストを入力できるようにしたいと考えていました。

私は文のキーワードはすべてKeywordsのセットを保持年代を、そしてstatement_contextsは、その文のインスタンスに関連付けられているすべてのキーワードのセットを保持し、文・コンテキストすべてContextのセットを保持年代を作ることができればそれが理想的ですそのステートメントに関連付けられています。しかし、私のために出てくる二つの問題があります。ステートメントは、キーワードとコンテキストを超えているので

  1. は、私は、多対多の関係にオブジェクトとしてキーワードとコンテキストを参照することはできません。私がそうするならば、私はエラーメッセージを受け取ります。 KeywordとContextの下にStatementを移動すると、KeywordとContextの両方で参照文を作成できなくなります(エラーメッセージが表示されます)。

  2. 「このフィールドにはオブジェクトのセットが保持される」と言えるフィールドタイプがあるかどうかはわかりません。

答えて

0

いずれのフィールドも必要ありません。あなたはすでにそれらを持っています:キーワードと文脈のManyToManyFieldsとは逆の関係です。

+0

2つのフィールドを持つ利点の1つは、管理インターフェイスのためです。ステートメント提出/更新ページでは、ステートメントに関連付けられたキーワードとコンテキストに関する情報は表示されません。私は逆の関係のクエリを作ることができることを知っていますが、...文モデルがキーワードと文脈のフィールドを持っていれば最も簡単です。文のモデルを変更するために逆の関係を使用する方法や、管理者の表示に影響する方法もわかりません。 –

+0

これはまさに[inline admins](https://docs.djangoproject.com/en/1.11/ref/contrib/admin/#inlinemodeladmin-objects)のためのものです。 –