用于同时编辑具有外键关系的两个 Django 模型的表单

cel*_*cel 5 python django django-forms

我试图找到一种简单的方法来创建允许同时编辑具有外键关系的两个模型的表单。

经过一些研究,似乎内联表单集非常接近我想要做的。

django 文档提供了这个例子:

from django.db import models

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

class Book(models.Model):
    author = models.ForeignKey(Author, on_delete=models.CASCADE)
    title = models.CharField(max_length=100)
Run Code Online (Sandbox Code Playgroud)

进而,

>>> from django.forms import inlineformset_factory
>>> BookFormSet = inlineformset_factory(Author, Book, fields=('title',))
>>> author = Author.objects.get(name='Mike Royko')
>>> formset = BookFormSet(instance=author)
Run Code Online (Sandbox Code Playgroud)

让我们假设Author有第二个字段,city。我可以使用fields参数在表单中添加一个城市吗?

如果内联表单集不是要走的路,是否有另一种方法可以生成这种联合表单?


经过更多的研究,我找到了django 模型表单。包括来自 2009 年相关模型的字段,这暗示内联表单集可能不是要走的路。

如果有不同工厂的默认解决方案,我会非常感兴趣。

Joh*_*fis 3

嗯,这与链接的帖子有点不同,因为那里的关系是 aOneToOne而不是 a ForeignKey

没有 django 工厂(至少据我所知)可以自动执行您想要的操作。您可以尝试以下方法: