Python Web开发:后台管理系统多对一模型处理

来自CloudWiki
跳转至: 导航搜索

登录后台

打开管理后台,http://127.0.0.1:8000/admin/

Python21051001.png

基本使用

添加作品

点击“作品”栏,添加作品

Python21051002.png

添加作品图片

Python21051003.png

Product21051004.png

这里你会发现,通过模型的外键,已经自动地为数据创建了关联,

只需选择所属的产品即可。

注意:这里删除某一产品时,会同时从删除其包含的所有“产品图片”数据。

进阶使用

上述添加过程,需要操作两个表单。

我们可以建立一种关联模型管理方法,将“产品”和“产品图片”模型在一个页面中进行管理。

主要通过更改注册模型的代码来实现。

from django.contrib import admin
from .models import Product,ProductImg

class ProductImgInline(admin.StackedInline):
    model = ProductImg
    extra = 1     # 默认显示条目的数量

class ProductAdmin(admin.ModelAdmin):
    inlines = [ProductImgInline,]

admin.site.register(Product, ProductAdmin)

首先通过admin.StackedInline创建了一个内联模型管理器ProductImgInline,该管理器使得模型得以以集成的方式在后台管理系统中显示

对应的model属性为ProductImg

然后定义了产品模型ProductAdmin,其内联属性指向前面的ProductImgInline

最后通过register将“产品”和“产品图片”模型进行绑定。

现在,原本需要在两个表单里添加的数据,现在一个表单中就可以了

Python21051004.png