Django admin.py 在修改/添加表单界面显示额外字段的方法

问题描述:

我有个blogextra表继承自blog,现在我想在blog的admin管理change界面显示对应的blogextra字段

解决方法:

可以使用admin.py的inline内联方法

代码:

models.py

from django.db import models

# Create your models here.

class Blog(models.Model):
  Name = models.CharField(max_length=350)
  def __unicode__(self):
    return str("Name:"+self.Name)

class BlogExtra(Blog):
  NameTwo = models.CharField(max_length=350)
  NameThree = models.CharField(max_length=350)
  def __unicode__(self):
    return str("Name:"+self.Name+" NameTwo:"+self.NameTwo+" NameThree:"+self.NameThree)

admin.py

# conding = UTF-8

from django.contrib import admin

from blogs.models import *

class BlogExtraInline(admin.StackedInline):
  model = BlogExtra
  fields = ['NameTwo']  #只显示NameTwo这个字段

class BlogAdmin(admin.ModelAdmin):
  list_display = ('id', 'Name')  

  def get_form(self, request, obj=None, **args):
    defaults = {}
    if obj is not None:
      if (len(BlogExtra.objects.filter(id=obj.id)) == 1):
        self.inlines = [BlogExtraInline]    #设置内联
      else:
        self.inlines = []           #如果不是继承,就取消设置

    defaults.update(args)
    return super(BlogAdmin, self).get_form(request, obj, **defaults)

admin.site.register(Blog, BlogAdmin)

展示效果:

正常无继承的:

存在继承的(显示额外字段):

以上这篇Django admin.py 在修改/添加表单界面显示额外字段的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • Django admin model 汉化显示文字的实现方法

    1.将添加blog的后台基本操作 在blog文件夹下新建一个admin.py文件加入一下代码: from django.contrib import admin from djcms.apps.blog.models import Post, Category, Tag admin.site.register(Post) admin.site.register(Category) admin.site.register(Tag) 重启服务,再到浏览器上登录到后台,是不是增加了对blog的基本操作

  • Python中Django 后台自定义表单控件

    在 django 中我们可以在 admin.py 中添加 ModelAdmin,这样就能很方便地在后台进行增删改查的操作.然而,对应 Model 生成的表单,并不友好,我们希望能像前端开发一样做出各种类型的控件,这就得对其后台的表单进行自定义. 其实 django 已经为我们提供了一些可用的表单控件,比如:多选框.单选按钮等,下面就以单选按钮为例: # forms.py from django import forms from .models import MyModel class MyFo

  • Django admin.py 在修改/添加表单界面显示额外字段的方法

    问题描述: 我有个blogextra表继承自blog,现在我想在blog的admin管理change界面显示对应的blogextra字段 解决方法: 可以使用admin.py的inline内联方法 代码: models.py from django.db import models # Create your models here. class Blog(models.Model): Name = models.CharField(max_length=350) def __unicode__

  • django中只使用ModleForm的表单验证

    主题 众所周知,django.forms极其强大,不少的框架也借鉴了这个模式,如Scrapy.在表单验证时,django.forms是一绝,也是面向对象的经典表现.但要用它来渲染表单那就不好玩了,除非写框架.本文章主要缕一缕如何使用django.forms来做表单验证. django项目基本信息 models.py from django.db import models class Article(models.Model): title = models.CharField(max_leng

  • Angular搜索 过滤 批量删除 添加 表单验证功能集锦(实例代码)

    废话不多说了,直接给大家贴代码,具体代码如下所示: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <style> *{ margin: 0; padding: 0; } .sspan{ background: #28a54c; color: #fff; margi

  • 使用bootstrapValidator插件进行动态添加表单元素并校验

    一.前言 实际工作中,要实现表单元素的动态增加,并使用bootstrapValidator插件对动态添加的表单元素进行前台校验.在以前的工作中也使用过bootstrapValidator对表单元素进行校验,但涉及到的表单元素都是固定的,所以在页面载入时,对表单元素进行初始化就可以实现.虽然思路很明确,但由于对bootstrapValidator的用法不熟悉,在这个问题上还是浪费了很多时间,现在就把解决方法和功能效果图贴出来,希望对大家有所帮助. 思路:动态添加表单元素,并调用bootstrapV

  • javascript实现的动态添加表单元素input,button等(appendChild)

    写一个小系统时,需要动态添加表单元素,按自己的实现方法写了这篇教程! 我想各位在很多网站上都看到过类似的效果! 1.先用document.createElement方法创建一个input元素! 复制代码 代码如下: var newInput = document.createElement("input"); 2.设定相关属性,如name,type等  复制代码 代码如下: newInput.type=mytype;   newInput.name="input1"

  • jQuery动态添加及删除表单上传元素的方法(附demo源码下载)

    本文实例讲述了jQuery动态添加及删除表单上传元素的方法.分享给大家供大家参考,具体如下: 运行效果截图如下: 点击此处查看在线演示效果. 具体代码如下: <html> <head> <script type="text/javascript" src="jquery-1.7.2.min.js"></script> <script type="text/javascript"> $(d

  • 浅谈jquery采用attr修改form表单enctype不起作用的问题

    做文件上传,需要将表单元素的enctype设置为'multipart/form-data',用jquery的attr方法在目前较新的主流浏览器上测试均可成功,唯独IE下死活不行.后来查阅ie浏览器6,7,8(9+由于开发机为xp,未进行测试)不支持attr的方式来修改enctype属性,需要通过dom元素的原生方法来设置, 代码如下: $('#form1').get(0).encoding = 'multipart/form-data'; 以上这篇浅谈jquery采用attr修改form表单en

  • django admin.py 外键,反向查询的实例

    如下所示: class OrderAdmin(admin.ModelAdmin): list_display = ( '_nick_name', 'time_order', 'year', 'item', 'status', 'number', 'money', 'deduction_point', 'deduction_account', 'pay', '_open_id', 'out_trade_no', ) search_fields = [ 'user__nick_name', 'use

  • 解决layui追加或者动态修改的表单元素“没效果”的问题

    layui版本:2.2.6(考虑到一万年以后会有人遇到类似问题 先做个版本记录) 关于该问题的layui官方文档地址:http://www.layui.com/doc/modules/form.html 官方原文: 有些时候,你的有些表单元素可能是动态插入的.这时 Form模块 的自动化渲染是会对其失效的.虽然我们没有双向绑定机制(因为我们叫经典模块化框架,偷笑.gif) 但没有关系,你只需要执行 form.render(type, filter); 方法即可. 代码样例 $.post('htt

  • Spring Security 表单登录功能的实现方法

    1.简介 本文将重点介绍使用 Spring Security 登录. 本文将构建在之前简单的 Spring MVC示例 之上,因为这是设置Web应用程序和登录机制的必不可少的. 2. Maven 依赖 要将Maven依赖项添加到项目中,请参阅Spring Security with Maven 一文. 标准的 spring-security-web 和 spring-security-config 都是必需的. 3. Spring Security Java配置 我们首先创建一个扩展 WebSe

随机推荐