class AssCompanyAttaInline(admin.TabularInline):
model = AssCompanyAttaModel
extra = 0
@admin.register(AssCompanyModel)
class AssCompanyAdmin(ImportExportModelAdmin):
# 列表中显示的字段(表头)
list_display = ('company', 'annex_link')
# 设置点击哪些字段可以点击进入编辑界面,默认为id字段
list_display_links = ('company', 'annex_link')
def annex_link(self, obj):
url = reverse('admin:assinfo_asscompanymodel_change', args=[obj.pk]) + '?annex=annex'
return format_html(f'<a _target="_self" href="{url}">附件</a>')
annex_link.short_description = '附件'
def get_inline_instances(self, request, obj=None):
"""
如果点击的附件链接,则显示内联的附件模型
"""
inlines = super().get_inline_instances(request, obj)
if request.GET.get('annex'):
inlines = [AssCompanyAttaInline(self.model, self.admin_site),]
return inlines
def get_fieldsets(self, request, obj=None):
"""
如果点击的附件链接,则将其他字段的详情信息全部隐藏
"""
if request.GET.get('annex'):
return [(None, {"fields": ()})]
return super().get_fieldsets(request, obj)
笔记 djangoadmin不同的详情页面字段显示不同是信息
最新推荐文章于 2024-07-22 16:24:23 发布
文章详细描述了如何在Django的Admin界面中,针对AssCompanyModel进行定制,包括使用TabularInline展示内联模型、annex_link方法实现附件链接点击后的行为以及get_inline_instances和get_fieldsets方法对附件操作时字段的控制。
摘要由CSDN通过智能技术生成