1.Django admin关联数据显示方式
在使用django自带的admin时,如果涉及到一对多关系,并且能够在一的一方查看多的一方和编辑多的一方时,我们可以使用如下的方式来实现。而多的一方显示样式可以通过继承不同的类来实现:
StackedInline:以块的形式嵌入
TabularInline:以表格的形式嵌入
TabularInline:以表格的形式嵌入
class ProductApplicationInline(admin.TabularInline):
model = ProductApplication
# 设置列表可显示的字段
fields = ('application',)
class ProductFeaturesInline(admin.TabularInline):
model = ProductFeatures
# 设置列表可显示的字段
fields = ('features',)
class ProductRelatedImageInline(admin.TabularInline):
model = ProductRelatedImage
# 设置列表可显示的字段
fields = ('image',)
class ProductAdmin(admin.ModelAdmin):
# 设置列表可显示的字段
list_display = ('title', 'category', 'views')
# 添加可显示的字段
fields = ('title', 'image', 'gzyl', 'jscs', 'category')
inlines = [ProductApplicationInline, ProductRelatedImageInline, ProductFeaturesInline]
但是当使用xadmin时就不存在这种继承方式了,经过查找资料可以这样实现
这里的实现方式是通过style属性来实现的,可选值有:
one,accordion,tab,stacked,table
至于具体显示效果,需要自己去实验,找那个适合你的方式
class CountryTabularInline(object):
model = Info
extra = 0
style = 'table' # 列表显示,one:只显示一条 accordion:缩略列表显示,可下拉 tab:横向tab显示 stacked:块显示 table:列表
# readonly_fields = ['url', 'country', 'email']
class CountryAdmin(object):
inlines = [CountryTabularInline]
xadmin.site.register(Country, CountryAdmin)