在使用django自带的admin时,如果涉及到一对多关系,并且能够在一的一方查看多的一方和编辑多的一方时,我们可以使用如下的方式来实现。而多的一方显示样式可以通过继承不同的类来实现:
StackedInline:以块的形式嵌入
TabularInline:以表格的形式嵌入
class BookInfoStackInline(admin.StackedInline):
model = HeroInfo # 要编辑的对象
extra = 1 # 附加编辑的数量
class AuthorInfoAdmin(admin.ModelAdmin):
...
inlines = [BookInfoStackInline]
但是,当使用xadmin时就不存在这种继承方式了,网上找了一圈没找到实现方法,查找了一下xadmin的源码,终于让我找到点蛛丝马迹。
这里的实现方式是通过style属性来实现的,可选值有:
one,accordion,tab,stacked,table
至于具体显示效果,需要自己去实验,找那个适合你的方式。
下面的代码是adminx.py中的配置:
class ProjectInfoTabularInline(object):
model = UserProject
extra = 0
style= 'table' # 列表显示,one:只显示一条 accordion:缩略列表显示,可下拉 tab:横向tab显示 stacked:块显示 table:列表
readonly_fields = ['name','localPath','isDelete','opf','ncx']
class UserAdmin(auth.UserAdmin):
list_display = ['id', 'username','email','isVerify','is_vip','is_staff']
search_fields = ('id','username', 'email')
# 用户创建的项目
inlines = [ProjectInfoTabularInline]
网友评论