Django admin ForeignKey筛选只显示终极栏目

作者 夜狼荼 2019年02月19日 10:03 阅读 1123

由于后台栏目为多级栏目,某些栏目不能发文章,怎么才能django admin后台ForeignKey只显示终极栏目呢:

from .models import Post, Tag, Categorg

@admin.register(Post)
class PostAdmin(admin.ModelAdmin):
	list_display = ['pk', 'title_color','category', 'create_time', 'onclick', 'isgood', 'get_view_url']
	
	    def formfield_for_foreignkey(self, db_field, request, **kwargs):
		# 复写formfield_for_foreignkey函数,修改显示
        if db_field.name == 'category': #判断是否为栏目
            kwargs['queryset'] = Categorg.objects.all().order_by('sort', 'fcate', 'pk') #修改queryset
        return super(PostAdmin, self).formfield_for_foreignkey(db_field, request, **kwargs) #别少了这步

这里再写个,栏目类别,父栏目只显示一级栏目:

class CategorgAdmin(admin.ModelAdmin):
    def formfield_for_foreignkey(self, db_field, request, **kwargs):
        if db_field.name == 'fcate':
            kwargs['queryset'] = Categorg.objects.filter(class_level=1, ispost=False)
        return super(CategorgAdmin, self).formfield_for_foreignkey(db_field, request, **kwargs)

发表评论