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

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/lxfHaHaHa/article/details/79110219

问题描述:
我有个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)

展示效果:

正常无继承的:

这里写图片描述

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

这里写图片描述

猜你喜欢

转载自blog.csdn.net/lxfHaHaHa/article/details/79110219