2017-08-09 77 views
0

我有一個名爲Statement的模型,它有一個名爲「keyword_pairs」的字段,它與另一個名爲KeywordInContext的模型創建了一個字段。重新渲染管理員訪問m2m字段和外鍵字段的模型

KeywordInContext有兩個字段:「關鍵字」和「上下文」。 「關鍵字」通過名爲Keyword的模型實例開發了一個外鍵。 「背景」與Keyword型號產生m2m的關係。這是創建一個配對系統,以便每個關鍵字有一組它可以配對的關鍵字。

但是,Statement的管理員更改頁面呈現KeywordInContext模型的方式僅適用於m2m關係的默認下拉框。此下拉框允許您選擇KeywordInContext模型的「關鍵字」字段,但不允許對「上下文」進行任何修改或添加。有人可以簡單地更新/添加語句,並隱含地說:「這個Statement有一堆KeywordInContext對象,其」關鍵字「字段設置爲我從此下拉菜單中選擇的內容。」但是他們實際上添加了他們想爲關鍵字指定的上下文,他們必須進入KeywordInContext的更改頁面。

這會禁止「關鍵字」和「上下文」的配對提交添加到管理端的「keyword_pairs」。我能做些什麼來改變這一點? 這裏是models.py

@python_2_unicode_compatible 
class Statement(models.Model): 
    statement_id = models.CharField(max_length=200) 
    title = models.CharField(max_length=200) 
    issue_date = models.DateField("Issue-Date") 
    author = models.ForeignKey(Person) 
    released_by = models.ForeignKey(Organization) 
    keywords = models.ManyToManyField('KeywordInContext') 

@python_2_unicode_compatible 
class KeywordInContext(models.Model): 
    keyword = models.ForeignKey(Keyword) 
    contexts = models.ManyToManyField(Keyword, related_name='keyword_context') 
    def __str__(self): 
     return self.keyword.word + ' (' + ', '.join(c.word for c in self.contexts.all()) + ')' #We temporarily changed the __str__ method to show all of the contexts for a keyword. 

回答