2012-01-13 74 views
0

我有一個模型Question,它可以有多個Answer實例,每個實例都有一個給定的係數。多對多字段的自定義管理員

我想要的是一個管理員,我可以根據需要添加儘可能多的答案,並在每次添加新答案時創建一個答案。

我嘗試了一個多對多的字段,如下所示,但默認的管理員是一個多重選擇與數據庫中的所有答案。

我最想要的是在我的問題管理中添加一個按鈕「添加答案」,這將允許我創建一個新答案並將其添加到我的問題中。

我該如何做到這一點?

感謝

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

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

回答

0

我想你可能有興趣在Admin Inlines形式。

在這種情況下,你需要刪除的多對多字段並添加 一個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對象中,您將有一個'answer_set'對象,其行爲類似於ManyToMany處理程序的 。

以下示例說明如何獲取包含與您的問題相關的所有答案的查詢集。

my_question.answer_set.all()