您的位置:首页 > 编程语言 > Go语言

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

2018-01-19 19:51 861 查看
问题描述:

我有个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)


展示效果:

正常无继承的:



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

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息