【Django】Admin常用设置

每次写admin时,都得各种百度,chatgpt,统一记录一下吧。

  • models.py
class DBMenu(models.Model):
    id = models.CharField(verbose_name='ID', default=id_generater.get_MEU_id, max_length=50, primary_key=True)
    name = models.CharField(verbose_name='菜单名称', max_length=100)
    url = models.CharField(verbose_name='链接地址', max_length=400, default="")
    parent = models.ForeignKey(verbose_name='父菜单', to='self', on_delete=models.CASCADE, null=True, blank=True)
    permission_group = models.ForeignKey(verbose_name='权限组', to=DBPermissionGroup, on_delete=models.CASCADE)

    # 方便admin左侧显示表名
    class Meta:
        verbose_name = '菜单'
        verbose_name_plural = '菜单s'

    # 输出对象名,都会调用这个方法,所以最后输出的是该对象的名称
    def __str__(self):
        return self.name
  • admin.py
class DBMenuAdmin(admin.ModelAdmin):
    # admin中展示字段
    list_display = ['name', 'id', 'url', 'get_parent_descriptions',  'get_permission_group_descriptions']
    # admin中可以链接的字段,链接到该数据内部
    list_display_links = ['name', 'id', 'url', 'get_parent_descriptions', 'get_permission_group_descriptions']


    # 方便显示关于外键字段的内容
    def get_permission_group_descriptions(self, obj):
        return obj.permission_group.name if obj.permission_group and obj.permission_group.name else ""

    # 显示外键字段的列名
    get_permission_group_descriptions.short_description = '权限组名称'

    def get_parent_descriptions(self, obj):
        return obj.parent.name if obj.parent and obj.parent.name else ""

    get_parent_descriptions.short_description = '父菜单名称'


admin.site.register(DBMenu, DBMenuAdmin)

猜你喜欢

转载自blog.csdn.net/feifeiyechuan/article/details/131312314