是否可以在django中的ModelForm或Form中内置一个内联formset?

时间:2013-12-24 04:13:15

标签: python django models relational

给出以下示例模型:

class Reporter(models.Model):
    pass
class Article(models.Model):
    reporter = models.ForeignKey(Reporter)

我想定义一个 ReporterForm ,它允许您为该记者添加/编辑文章,还可以编辑记者自己的字段。 (示例代码中不存在)

我希望能够在django管理面板中使用ReporterForm,这样每当编辑一个记者时,管理员也可以看到内联属于该记者的文章。

有干净的方法吗?或者这不是正确的模型设计?

PS。我考虑给Reporter一个ManyToManyField(文章),只是让django做它的魔法,但这意味着文章可以属于许多不同的记者,不是吗?

1 个答案:

答案 0 :(得分:1)

这正是内联表单集的用途。您可以使用内联模型表单集:
https://docs.djangoproject.com/en/dev/topics/forms/modelforms/#inline-formsets

要在管理网站中执行此操作,请InlineModelAdmin
https://docs.djangoproject.com/en/dev/ref/contrib/admin/#inlinemodeladmin-objects

from django.contrib import admin

class ArticleInline(admin.TabularInline):
    model = Article

class ReporterAdmin(admin.ModelAdmin):
    inlines = [
        ArticleInline,
    ]