Django.contrib.admin.options中的InlineModelAdmin()如何使用
发布时间:2023-12-28 06:18:44
InlineModelAdmin是Django框架中用于在admin后台管理界面中以内联的方式展示其他模型的子模型的类。它允许在编辑或创建一个父模型时,同时编辑或创建相关联的子模型。
下面是一个使用InlineModelAdmin的例子:
1. 首先,我们创建两个模型,一个是父模型(Article),另一个是子模型(Comment),它们之间通过外键关联。
# models.py
from django.db import models
class Article(models.Model):
title = models.CharField(max_length=100)
content = models.TextField()
class Comment(models.Model):
article = models.ForeignKey(Article, on_delete=models.CASCADE)
text = models.TextField()
2. 接下来,我们需要创建InlineModelAdmin类来定义子模型在admin后台的展示方式。
# admin.py
from django.contrib import admin
from .models import Article, Comment
class CommentInline(admin.StackedInline):
model = Comment
class ArticleAdmin(admin.ModelAdmin):
inlines = [CommentInline]
admin.site.register(Article, ArticleAdmin)
在上面的代码中,我们创建了一个名为CommentInline的InlineModelAdmin类,它定义了子模型Comment在父模型Article的编辑页中以堆叠的方式展示。接着,我们将CommentInline类添加到ArticleAdmin的inlines属性中,表示将CommentInline嵌入到Article模型的编辑页中,这样就可以在编辑Article时同时编辑Comment。
3. 最后,注册Article模型和ArticleAdmin类。
admin.site.register(Article, ArticleAdmin)
这样,在admin后台的文章编辑页中,会显示嵌入的子模型评论的编辑表单,可以通过添加或删除评论来与文章进行关联。
这就是使用InlineModelAdmin的基本流程。通过使用InlineModelAdmin,可以方便地在admin后台管理界面中编辑或创建与父模型相关的子模型。
