如何在一个模板中显示两个共享关系的表单?

时间:2018-09-04 03:42:21

标签: django

class Author(forms.ModelForm):
    name = models.CharField(max_length=100)

class Book(forms.ModelForm):
    author = models.ForeignKey(Author, on_delete=models.CASCADE)
    title = models.CharField(max_length=100)

我有两个共享它们之间的外键关系的模型,我想在一个模板中显示这两个,所以用户可以一次提交这两个。我知道如何通过基于函数和基于类的视图来呈现它们。困惑于那个外键,当在Author modelform字段中一个类型名称出现在Book model形式的author字段中时,该如何表示呢?

1 个答案:

答案 0 :(得分:0)

从您的问题尚不清楚,您为什么要两种形式。如果一个人正在编辑一本书,而作者是FK来预定,则希望作者列表在“书本”表单中显示为下拉列表,对吗?因此,一种形式。使用ModelForm的ForeignKey约定时,这几乎是自动发生的。

当然,这假定所有作者都已在数据库中,并且/或者您在管理作者的单独视图上具有单独的表单。如果您要问如何提供创建新作者和同时编辑书籍的功能, 这要复杂得多,因为您需要(例如)在弹出窗口中显示“新作者”表单,然后将添加的结果发送到“书”编辑表单中的“作者”下拉列表中(就像在Django Admin中所做的那样)。

但是按照惯例,我们假定到“书”表单时,所有作者都已存在,您可以在下拉列表中将它们显示为选择。