python - django-admin 中的模型描述

标签 python django django-admin

是否可以在django-admin中对某个模型的列表展示页面进行模型描述或者描述?

我说的是当你点击 django-admin 主页上的模型名称链接时,当你转到该模型的列表显示页面时。表格顶部将写有说明。有点像

“此模型用于记录我们的抓取将获取的所有帐户......等等”

这样的事情,有可能吗?

最佳答案

如果添加到 Django 管理的核心中,那将是一个非常好的功能。在此之前,这里是对您的问题的快速演练。

假设您要打印每个模型的 docstring,如下所示:

class MyModel(models.Model):
    """
    I wanna get printed in the Admin!
    """

    # model fields here

因此,您想在 change_list 中打印它页。好。

  1. 创建 custom template tag (在您的应用内或创建另一个将包含全局模板标签/过滤器的应用)像这样:

    from django import template
    from django.utils.html import mark_safe
    
    register = template.Library()
    
    @register.simple_tag()
    def model_desc(obj):
        if obj.__doc__:
            return mark_safe('<p>{}</p>'.format(obj.__doc__))
        return ''
    
  2. 现在,在您的项目目录(manage.py 所在的位置)中创建如下结构:

    project/
        project/
            project stuff here, i.e wsgi.py, settings etc
        myapp/
            myapp stuff here, i.e models, views etc
        templates/
            admin/
                change_list.html
        manage.py
    
  3. change_list.html 中添加以下内容:

    {% extends 'admin/change_list.html' %}
    {% load yourapp_tags %}
    
    {# block.super will print the "Select <Model> to change" h1 title #}
    {# The model_desc template tag is the one you created and prints the docstring of the given model #}
    {% block content_title %}{{ block.super }}<br>{% model_desc cl.model %}{% endblock %}
    

截图如下:

Model docstring in Django admin

[更新]:我有 seen in the source当没有指定 docstring 时,Django 会以如下形式为您生成一个:ModelName(model_field_name1, model_field_name2, ...)。如果您不想这样,只需执行以下操作:

class MyModelWithoutDocstring(models.Model):

    # model fields here

MyModelWithoutDocstring.__doc__ = ''  # "reset" the __doc__ on this model.

关于python - django-admin 中的模型描述,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42826287/

相关文章:

python - 用于 Python Web 开发(Windows 或 Linux)的最佳 F/OSS IDE?

python setup.py 构建 ctypes.CDLL : cannot open shared object file: No such file or directory

Django:如何在登录时在管理中设置默认语言

python - Django - 使用 mysql.connector.django 给出 TypeError : not all arguments converted during string formatting

python csv writer没有正确处理转义 '|'

Python 在执行过程中更新并保存

python - Django 1.9.2 编码错误

django - 是否可以在没有请求对象的情况下在 Django 中使用上下文处理器?

django-admin - 内联中的 Django 1.8 show_change_link 不显示链接

python - 为什么 Django admin list_select_related 在这种情况下不起作用?