我有一个名为Statement
的模型,它有一个名为“keyword_pairs”的字段,用另一个名为KeywordInContext
的模型创建。
KeywordInContext
有两个字段:“关键字”和“上下文”。 “keyword”使用名为Keyword
的模型实例开发外键。 “context”与模型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.
答案 0 :(得分:0)
除非我误解了这个问题,否则听起来像是你所追求的内容。文档有一个非常明确的例子:
https://docs.djangoproject.com/en/1.11/ref/contrib/admin/#inlinemodeladmin-objects