相关文章推荐
从容的柚子  ·  Windows Hello ...·  2 年前    · 
老实的刺猬  ·  pyqt5 qlineedit ...·  3 年前    · 

问题描述:
我有个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 Model: from django.db import models from django.contrib.auth.models import AbstractUser class User(AbstractUser): # AbstractUser这个类,也就是Django框架默认使用的一个用于管理用户的User类, 这个类生成一个auth_user表。所以,要扩展用户属性,可以继承AbstractUser, 在子类UserModel中实现扩展。 nick_n 必须在settings中配置AUTH_USER_MODEL # 覆盖默认的用户模型,使用自定义用户模型,语法:'app的名称.自定义用户模型的名称' AUTH_USER_MODEL = 'admi.UserModel' Django自带的admin管理后台简直是个bug级的存在, 几行代码就可以撸出一个功能齐全的管理后台来。小编我今天就带你看下Django自带的admin有哪些高级用法值得掌握。本文建议... 参考上篇博文,我们利用了OneToOneField的方式使用了django自带的user,http://www.cnblogs.com/caseast/p/5909248.html , 但这么用有个问题,就是每次增删改查数据,因为有外键的存在都要查询两次(当然可以用select_related方式减少查询次数,参考: Django models对象的select_related方法(减少查询次数) ),另外在admin中需要维护2张表,先创建User,再在UserProfile中进行关联操作。 class Asset(BaseModel): """资产信息model""" type = models.ForeignKey(AssetType, on_delete=models.CASCADE, verbose_name="资产类型") name = models.CharField(verbose_name="资产名称", max_length=50) 先说需求: 1、django 自带了admin后管,如果我们需要使用,只需把我们定义的models注册即可; 2、但如果只是简单注册,那显示的很简单,根本看不到每行记录的描述信息,全部以model object 形式显示,必须点击进去也能看到信息,太不方便,如下图: 1、显示关键信息 效果如下图,这样就好看多啦。 在 admin.py 文件中配置一下就行。 admi... 1.首先在models.py中编写扩展User所用到的userProfile模型及下拉框和多选框选项值所需要的模型(因为我所做的下拉框和多选框的值都是从数据库里面取得),代码如下: 2.第二步编写admin.py对User字段进行扩展,代码如下: # -*- coding: UTF-8 -*- from django.contrib import admin from django impo django admin 后台默认的样式可能不满足我们的需求,这个时候,我们就需要重写默认的样式。 我找到的有两种方法,其中一种(formfield_overrides)只能针对某种字段类型,不能指定字段。这里只介绍另一种,可以指定具体哪个字段。 这里只实现了提示信息,当然还可以设置输入框长度、宽度等。 1、使用前 2、使用后 3、实现代码 admin.py @admin.register(models.WarnUser) class WarnUserAdmin(adm 修改管理页面所显示的字段需要在该app的文件夹下增加admin.py,然后在admin.py中register模型,当模型修改之后需重新注册,unregister之后再register 对admin页面显示的修改,需要使用ModelAdmin类,ModelAdmin有一些选项可供调节,我一直对field和list_display有一些分不清,后来自己试了一下发现: fileds字段控制“修改添 1)打开booktest/admin.py文件,修改AreaAdmin类如下: class BookInfoAdmin(admin.ModelAdmin): list_per_page = 2 2)在浏览器中查看区域信息的列表页面,效果如下图:... 默认情况下,ModelAdmin只允许您管理模型“本身”字段,而不是相关模型.以下方法将实现,在应用类的列表管理显示页面,显示父表的字段;在编辑页面,父表对子表进行编辑. models.py如下 class Level(models.Model): # l_num = models.IntegerField(default=0, verbose_name='序号') name = ... from django.contrib import admin urlpatterns = [ url(r'^admin/', include(admin.site.urls)),] 2.seetings.py INSTALLED_APPS = [ 'django.contrib.admin',] 二、从app里面写好自定义... 1.Category与Blog是一对多关系:Category对象实例获取关联的Blog对象 category.blog_set category.blog_set.count() #获取关联的Blog对象的数量 2.Tag与Blog是多对多关系: tag.blog_set.count() #获取Tag关联的所有Blog对象的数量 tag_list = blog.tag.all() class Bl...