Django admin管理工具TabularInline类用法详解

TabularInline类用于在A页面上编辑B表的字段,举例说明,如果models.py中有Staff、Job两个model:

from django.db import models

class Staff(models.Model):
 name = models.CharField(max_length=10)

class Job(models.Model):
 staff = models.ForeignKey(Staff)
 task = models.CharField(max_length=100)

如果想在Staff页面编辑Job的内容,可以在admin.py中这么写:

from django.contrib import admin

class JobInline(admin.TabularInline):
 model = Job

class StaffAdmin(admin.ModelAdmin):
 inlines = [
  JobInline,
 ]

如果想编辑第三个表,也可以直接加上,比如models.py中职员还有一个工资表Salary:

class Salary(models.Model):
 staff = models.ForeignKey(Staff)
 salary = models.IntegerField(max_length=8)

可以在admin.py中这么写:

from django.contrib import admin

class JobInline(admin.TabularInline):
 model = Job

class SalaryInline(admin.TabularInline):
 model = Salary

class StaffAdmin(admin.ModelAdmin):
 inlines = [
  JobInline,
  SalaryInline
 ]

Django提供了两个InlineModelAdmin的子类,分别是TabularInline和StackedInline,区别在于使用的模板不同。

补充知识:django admin TabularInline raw_id_fields 添加查询 搜索小图标显示

问题:在django app admin TabularInline类使用了下面引用了 raw_id_fields 还是找不到搜索小图标。模型引用的是在别的app的model下。

解决方案:yourapp.adminx.py 下面需要注册对应的模型。

以上这篇Django admin管理工具TabularInline类用法详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • Django模板标签{% for %}循环,获取制定条数据实例

    有时候,为了获取查询结果的部分数据,需要对变量进行一些处理,在网上查了一圈,只发现了这两个方法: 返回查询结果的切片 在返回给前端的结果中,通过切片来取得想要的数据: pictures = Post.objects.filter(status='published')[:8] 如[:8],但这种操作比较片面,会将返回结果限制住,有时候不利于其他的操作使用 2.使用{% if %}标签和forloop.counter变量来获取: <h3>最新博文</h3> {% for pictur

  • Django 解决阿里云部署同步数据库报错的问题

    写在最前面: 在阿里云租了一台服务器,搭建了一个博客,采用的是Ubuntu+Django+uwsgi+nginx+mysql的结构. 运行了一段时间后,我发现我忘记了django自带后台的密码! 然后很常规的修改密码的操作,就是无法登陆! 然后想再创建一个超级用户,登上去看看什么情况,结果创建超级用户又报错? 可是本地环境是ok的,然后同步数据库出错...反正没有对的. 然后同步数据库报错如下: 手机端截的图,查了一下报错,应该是setting.py的配置问题,然后我把生产上的代码拿下来看了下.

  • django 解决扩展自带User表遇到的问题

    首先要扩展自带的auth_user表我就放个图吧, 同时setting中应该设置: # 此处重载是为了使UserProfile生效 AUTH_USER_MODEL = "EcdsApp.UserProfile" 本人的项目需要对此表进行扩展,再建两个子表关联这个表,关联关系为一对一: 修改完成之后进行子表关联: from django.contrib.auth.models import AbstractUser, User from django.conf import settin

  • django创建超级用户时指定添加其它字段方式

    使用 python manage.py createsuperuser创建超级用户时只能默认输入:用户名,邮箱,及密码来创建 有的时候我们需要创建的时候指定额外的字段,可以通过下面的方法 使用 python manage.py shell 进入shell脚本 在shell脚本中 from users.models import User User.objects.create_superuser('用户名','邮箱','密码',mobile=19111111111) # User.objects

  • Django admin管理工具TabularInline类用法详解

    TabularInline类用于在A页面上编辑B表的字段,举例说明,如果models.py中有Staff.Job两个model: from django.db import models class Staff(models.Model): name = models.CharField(max_length=10) class Job(models.Model): staff = models.ForeignKey(Staff) task = models.CharField(max_leng

  • Django Admin 管理工具的实现

    Django 自动管理工具是 django.contrib 的一部分.你可以在项目的 settings.py 中的 INSTALLED_APPS 看到它: /HelloWorld/HelloWorld/settings.py 文件代码: INSTALLED_APPS = ( 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django

  • django admin管理工具自定义时间区间筛选器DateRangeFilter介绍

    django admin管理工具有很多好用的功能,例如搜索框.筛选器等,编码简单,功能强大. 但是常规的时间筛选有一定局限性,只能显示一定时间节点到当前时间这一段时间段内的筛选结果,做不到自由定义时间段筛选,本人找到了可以实现这一功能的插件,就是今天要介绍的DateRangeFilter. 注意: DateRangeFilter只适用于Django 1.4以上的版本. 插件安装 使用 pip或easy_install: pip install django-daterange-filter 修改

  • Django 权限管理(permissions)与用户组(group)详解

    如果你只是利用Django开发个博客,大部分用户只是阅读你的文章而已,你可能根本用不到本节内容.但是如果你想开发一个内容管理系统,或用户管理系统,你必需对用户的权限进行管理和控制.Django自带的权限机制(permissions)与用户组(group)可以让我们很方便地对用户权限进行管理.小编我今天就尝试以浅显的语言来讲解下如何使用Django自带的权限管理机制. 什么是权限? 权限是能够约束用户行为和控制页面显示内容的一种机制.一个完整的权限应该包含3个要素: 用户,对象和权限,即什么用户对

  • Django中的FBV和CBV用法详解

    FBV FBV,即 func base views,函数视图,在视图里使用函数处理请求. 以用户注册代码为例, 使用两个函数完成注册 初级注册代码 def register(request): """返回注册页面""" return render(request, "register.html") def register_handle(request): """进行注册处理""

  • Java String类用法详解

    一.简介 零碎知识点 extends Object implements serializable,Comparable< String >,charSequence String类表示字符串,所有字符串文字都是此类的对象 字符串是不变的,值在创建后无法更改 对象一旦声明则不可改变,改变的只是地址,原来的字符串还是存在的,并且产生垃圾 任何一个""都为字符串对象,无赋值则为匿名对象 用"+"拼接字符串尽量避免,一般用append+toString Str

  • nodejs管理工具nvm安装过程详解

    nvm nvm负责管理多个版本的nodejs 安装: https://github.com/coreybutler/nvm-windows/releases 下载nvm-setup.zip,nvm-noinstall.zip 点击nvm-setup.exe安装,一路下一步,这里安装到C:\dev\nvm,安装完成后自动配置了环境变量:NVM_HOME,NVM_SYMLINK,也会添加到Path 验证是否安装成功,打开命令行cmd nvm常用的命令 nvm list 查看当前安装的Node.js所

  • C#DirectoryInfo类用法详解

    DirectoryInfo类是System.IO命名空间的一部分.它用于创建,删除和移动目录.它提供了执行与目录和子目录相关的操作的方法.这是一个密封的类,所以不能继承它. DirectoryInfo类提供了下面列出的构造函数,方法和属性. C# DirectoryInfo语法 [SerializableAttribute] [ComVisibleAttribute(true)] public sealed class DirectoryInfo : FileSystemInfo C#  Dir

  • C++ stringstream类用法详解

    本文主要介绍 C++ 中 stringstream 类的常见用法. 1 概述 <sstream> 定义了三个类:istringstream.ostringstream 和 stringstream,分别用来进行流的输入.输出和输入输出操作.本文以 stringstream 为主,介绍流的输入和输出操作. <sstream> 主要用来进行数据类型转换,由于 <sstream> 使用 string 对象来代替字符数组(snprintf方式),就避免缓冲区溢出的危险:而且,因

  • Java BigDecimal类用法详解

    一.简介 Java在java.math包中提供的API类BigDecimal,用来对超过16位有效位的数进行精确的运算.双精度浮点型变量double可以处理16位有效数.在实际应用中,需要对更大或者更小的数进行运算和处理.float和double只能用来做科学计算或者是工程计算,在商业计算中要用java.math.BigDecimal.BigDecimal所创建的是对象,我们不能使用传统的+.-.*./等算术运算符直接对其对象进行数学运算,而必须调用其相对应的方法.方法中的参数也必须是BigDe

随机推荐