django admin创建的时候的admin.py 中书写的案例

本文通过一个具体的案例展示了如何在Django的admin.py中自定义Employe模型的管理界面,包括设置list_display、search_fields、list_per_page、raw_id_fields、list_filter等属性,以及添加自定义操作按钮如test、make_copy,并详细配置了按钮的样式、类型和行为。

@admin.register(Employe)
class EmployeAdmin(ImportExportActionModelAdmin):
    resource_class = ProxyResource
    list_display = ('id', 'name', 'gender', 'phone', 'birthday', 'department', 'enable', 'create_time')
    # search_fields = ('name', 'enable', 'idCard', 'department')
    search_fields = ('name', 'department__name')
    list_per_page = 20
    raw_id_fields = ('department', 'title')
    list_filter = ('department', AgeListFilter, 'create_time')
    # list_filter = (AgeListFilter, 'department', 'create_time', 'birthday', 'time', 'enable', 'gender')

    list_display_links = ('name',)

    list_editable = ('department', 'phone', 'birthday', 'enable', 'gender')

    date_hierarchy = 'create_time'

    fieldsets = [(None, {'fields': ['name', 'gender', 'phone']}),
                 (u'其他信息', {
                     'classes': ('123',),
                     'fields': ['birthday', 'department', 'enable']})]

    @transaction.atomic
    def test(self, request, queryset):
        pass

    # 增加自定义按钮
    actions = [test, 'make_copy', 'custom_button']

    def custom_button(self, request, queryset):
        pass

    # 显示的文本,与django admin一致
    custom_button.short_description = '测试按钮'
    # icon,参考element-ui icon与https://fontawesome.com
    custom_button.icon = 'fas fa-audio-description'

    # 指定element-ui的按钮类型,参考https://element.eleme.cn/#/zh-CN/component/button
    custom_button.type = 'danger'

    # 给按钮追加自定义的颜色
    custom_button.style = 'color:black;'

    # 链接按钮,设置之后直接访问该链接
    # 3中打开方式
    # action_type 0=当前页内打开,1=新tab打开,2=浏览器tab打开
    # 设置了action_type,不设置url,页面内将报错

    custom_button.action_type = 1
    custom_button.action_url = 'https://www.baidu.com'

    def make_copy(self, request, queryset):
        ids = request.POST.getlist('_selected_action')
        for id in ids:
            employe = Employe.objects.get(id=id)

            Employe.objects.create(
                name=employe.name,
                idCard=employe.idCard,
                phone=employe.phone,
                birthday=employe.birthday,
                department_id=employe.department_id
            )

    make_copy.short_description = '复制员工'

 

 

### 作用及区别 `django-admin.py` 和 `django-admin` 是用于管理 Django 项目的命令行工具,但它们在使用方式和实现机制上存在差异。 #### django-admin.py 的作用 `django-admin.py` 是一个 Python 脚本,用于执行 Django 提供的管理命令。它主要用于创建项目、启动应用程序、运行迁移等操作。例如,可以通过以下命令创建一个新的 Django 项目: ```bash django-admin.py startproject myproject ``` 在早期版本的 Django 中,`django-admin.py` 是主要的命令行工具,用户通过直接调用该脚本来执行管理任务[^3]。 #### django-admin 的作用 `django-admin` 是一个可执行文件,通常是一个封装了 `django-admin.py` 的快捷方式。它提供了与 `django-admin.py` 相同的功能,但使用方式更为简洁。例如,创建项目的命令如下: ```bash django-admin startproject myproject ``` 在较新版本的 Django 中,`django-admin` 成为了推荐使用的工具,因为其语法更简洁,且无需显式调用 Python 解释器[^2]。 #### 区别 1. **调用方式** `django-admin.py` 是一个 Python 脚本,需要通过 Python 解释器运行,例如: ```bash python django-admin.py startproject myproject ``` 而 `django-admin` 是一个可执行文件,可以直接运行,无需显式调用 Python 解释器: ```bash django-admin startproject myproject ``` 2. **兼容性** `django-admin.py` 在 Django 的早期版本中广泛使用,但在 Django 4.0 及以后版本中已被标记为过时,取而代之的是 `django-admin`。这意味着,虽然 `django-admin.py` 仍然可用,但官方不再推荐使用,并计划在未来版本中移除[^2]。 3. **环境依赖** 使用 `django-admin.py` 时,需要注意 Python 环境的配置,尤其是在多版本 Python 共存的情况下,可能需要指定具体的 Python 解释器路径。而 `django-admin` 通常会自动适配当前环境,减少了手动配置的复杂性。 4. **生成文件的完整性** 在某些情况下,使用 `django-admin.py` 创建项目时可能会出现生成文件不完整的问题,例如缺少 `manage.py` 文件。这通常与环境变量或路径配置有关,而使用 `django-admin` 则较少出现此类问题[^5]。 #### 使用场景 在实际开发中,建议优先使用 `django-admin` 来管理 Django 项目,因为它更简洁且兼容性更好。然而,在某些特殊情况下,例如需要显式控制 Python 解释器版本时,可以使用 `django-admin.py` 并通过全路径调用以确保命令的正确执行[^3]。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值