简化Django管理器的调整和工具。
项目描述
Django Admin Steroids - 扩展Django管理的调整和工具
概述
Django的admin支持很多自定义。然而,当前的实现依赖于类值和方法的使用,需要大量的代码重复。此项目包含类、混合和几个模板,提高了Django的admin的可用性和可维护性,并实现了一些缺失的功能。
特性
ModelAdmin混合
-
ReadonlyModelAdmin - 从ModelAdmin中移除所有可编辑性。
-
CSVModelAdmin - 添加一个更改列表操作,将所选记录导出为CSV。
-
FormatterModelAdmin - 允许使用admin字段格式化程序。
-
BetterRawIdFieldsModelAdmin - 从
Django Snippet <http://djangosnippets.org/snippets/2217/>
转换而来,格式化所有原始ID字段,并提供到相应管理更改页面的便捷链接。
字段格式化程序
如果您想用美元符号和逗号格式化货币美元值,您必须在ModelAdmin类中实现一个myvariable_dollars()方法,该方法返回所需的字符串,然后将其列在ModelAdmin的readonly_fields列表中。
在许多非平凡的应用中,我发现我不得不编写大量的这些函数,其中大部分几乎是相同的。因此,我决定将此功能抽象成多个类,这些类可以被实例化并轻松地插入到ModelAdmin中。
预构建的格式化程序包括
-
美元格式
-
百分比格式
-
居中格式
-
空格格式
-
布尔格式
-
外键链接
-
一对一链接
格式化器通过在ModelAdmin的字段名称周围包裹它们来使用。比如说,你有一个名为 income
的字段,你想在管理界面中以美元符号的形式显示它。通常,你会这样做:
class BudgetAdmin(admin.ModelAdmin):
fields = (
'id',
'name',
'income_str',
)
readonly_fields = (
'income_str',
)
def income_str(self, request, obj=None):
if obj is None:
return
return '$%.2f' % obj.income
格式化器简化了这一过程。在这个例子中,你可以使用DollarFormat类来实现同样的功能,但代码量更少。
from admin_steroids import FormatterModelAdmin
from admin_steroids.formatters import DollarFormat
class BudgetAdmin(FormatterModelAdmin):
fields = (
'id',
'name',
DollarFormat('income', decimals=2),
)
Ajax列表过滤器
Django默认的管理列表过滤器不允许选择字段的多值,也不处理具有大量值的字段。字段将所有值都渲染到列表或选择下拉框中,这会减慢页面加载速度并浪费屏幕空间。
我实现了一个自定义的AjaxFieldFilter,允许你通过Ajax搜索栏搜索一个或多个值,这样管理员仍然可以快速渲染,同时用户仍然可以搜索字段使用的任何值。
在你的管理界面中,添加AjaxFieldFilter如下:
from django.contrib import admin
from admin_steroids.filters import AjaxFieldFilter
import models
class MyModelAdmin(admin.ModelAdmin):
list_filters = (
('myfield', AjaxFieldFilter),
)
admin.site.register(models.MyModel, MyModelAdmin)
然后,在你的settings.py中,将'admin_steroids'添加到你的INSTALLED_APPS
中,并标记你的字段为可搜索
INSTALLED_APPS = [
...,
'admin_steroids',
]
DAS_ALLOWED_AJAX_SEARCH_PATHS = [
('myapp', 'mymodel', 'myfield'),
]
DAS_AJAX_SEARCH_PATH_FIELDS = {
# This assumed "myfield" a ForeignKey, pointing to a model that has
# a "name" and "slug" field you want to search.
# If "myfield" is a simple CharField, you don't need to specify
# anything here.
('myapp', 'mymodel', 'myfield'): ('name', 'slug'),
}
最后,将admin_steroids添加到你的urls.py中,以公开Ajax搜索URL,默认情况下将渲染为/admin/<app>/<model>/field/<field>/search
的形式
urlpatterns = patterns('',
...
# Should go before the actual admin, so it won't be overridden.
(r'^admin/', include('admin_steroids.urls')),
(r'^admin/', include(admin.site.urls)),
...
)
你可以通过排除上面的URL包含并指定自己的模式来覆盖这些URL,该模式指向admin_steroids.views.ModelFieldSearchView。
请参阅admin_steroids.urls以获取示例。
安装
使用pip通过以下命令安装此包:
pip install django-admin-steroids
开发
测试需要安装Python开发头文件,你可以在Ubuntu上使用以下命令通过Dead Snakes PPA安装它:Dead Snakes PPA
sudo apt-get install python-dev python3-dev python3.4-minimal python3.4-dev python3.5-minimal python3.5-dev python3.6-minimal python3.6-dev
运行所有测试
export TESTNAME=; tox
运行特定环境的测试(例如Python 3.7与Django 3.2)
export TESTNAME=; tox -e py37-django32
运行特定测试
export TESTNAME=.test_widgets; tox -e py37-django32
项目详情
下载文件
下载适用于您平台的应用程序。如果您不确定选择哪个,请了解更多关于安装包的信息。
源代码分发
django-admin-steroids-1.0.37.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | c568a019fe11690ac04c12f71cd6ee925a60a9ae4fb0db6e389c51d76a924b97 |
|
MD5 | e18ffcf9a83a158fe691b12770566b6d |
|
BLAKE2b-256 | 64085af319c8d2386f91a9bd1aceb6d5542a2e09f26129e3f636d04016f10b01 |