欢迎访问宙启技术站
智能推送

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后台管理界面中编辑或创建与父模型相关的子模型。