给出以下示例模型:
class Reporter(models.Model):
pass
class Article(models.Model):
reporter = models.ForeignKey(Reporter)
我想定义一个 ReporterForm ,它允许您为该记者添加/编辑文章,还可以编辑记者自己的字段。 (示例代码中不存在)
我希望能够在django管理面板中使用ReporterForm,这样每当编辑一个记者时,管理员也可以看到内联属于该记者的文章。
有干净的方法吗?或者这不是正确的模型设计?
PS。我考虑给Reporter一个ManyToManyField(文章),只是让django做它的魔法,但这意味着文章可以属于许多不同的记者,不是吗?
答案 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,
]