python

超轻量级php框架startmvc

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

更新时间:2020-07-26 07:48:01 作者:startmvc
问题描述:我有个blogextra表继承自blog,现在我想在blog的admin管理change界面显示对应的blogextr

问题描述:

我有个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 在修改/添加表单界面显示额外字段的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

Django admin.py 表单界面 字段