我有一個名爲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.