2012-01-13 12 views
0

私はモデルQuestionを持っています。これはいくつかの係数を持つAnswerのインスタンスを複数持つことができます。多対多フィールドのカスタム管理者

私が望むのは、私が望むだけ多くの回答を追加し、毎回新しい回答を追加できる管理者です。

以下に示すように、多対多のフィールドを試しましたが、デフォルトのadminはdb内のすべての回答を含む複数の選択です。

私が理想的に言っているのは、私の質問管理者の「回答を追加」ボタンです。新しい回答を作成して質問に追加することができます。

どうすればこの問題を解決できますか?

おかげ

class Question(models.Model): 
    answer = models.ManyToManyField(Response) 

class Answer(models.Model): 
    text = models.TextField() 
    coefficient = models.IntegerField() 

答えて

0

私はあなたがAdmin Inlinesフォームに興味があるかもしれないと思います。

この場合、ManyToManyフィールドを削除して ForeignKeyフィールドを回答モデルに追加し、 の管理者に質問管理ビューに「インライン」管理フォームを追加するように指示する必要があります。

models.py

class Question(models.Model): 
    ... 


class Answer(models.Model): 
    question = models.ForeignKey(Question) 
    text = models.TextField() 
    coefficient = models.IntegerField() 

admin.py

class AnswerInline(admin.StackedInline): 
    model = Answer 


class QuestionAdmin(admin.ModelAdmin): 
    inlines = [AnswerInline,] 

これはあなたが求めて正確に何をすべき。

Questionオブジェクトには、 ManyToManyハンドラのように動作する 'answer_set'オブジェクトがあります。

次の例では、質問に関連するすべての回答を含むクエリセットを取得する方法を説明します。

my_question.answer_set.all() 
関連する問題