raw_id_fields小部件替换,用于处理更改时对象字符串值的显示。
django-dynamic-raw-id的Python项目详细描述
重要
django沙门氏菌被重命名为django dynamic raw id和 作为版本2.1重新发布。最新的django沙门氏菌版本是1.2。 请升级您的代码,请参阅下面的安装和使用。
Django动态原始ID
django admin raw_id_fields小部件替换,用于处理 对象更改时的字符串值,可以通过模板重写。 请参见此示例:
安装
该应用程序与Python2.7→3.7和所有版本兼容并经过测试 在1.8到2.1之间。
使用pip:
安装包$ pip install django-dynamic-raw-id
把dynamic_raw_id放到INSTALLED_APPS列表中:
INSTALLED_APPS=(# ... other apps'dynamic_raw_id',)
并添加urlpattern:
urlpatterns=[# ...url(r'^admin/dynamic_raw_id/',include('dynamic_raw_id.urls')),]
dynamic_raw_id附带了一些静态文件,因此不要忘记运行 manage.py collectstatic。
使用量
要开始在应用程序中使用django动态raw id,只需 在ModelAdmin类中实现DynamicRawIDMixin,并添加所需的 列表中的字段dynamic_raw_id_fields:
fromdynamic_raw_id.adminimportDynamicRawIDMixinclassUserProfileAdmin(DynamicRawIDMixin,admin.ModelAdmin):dynamic_raw_id_fields=('user',)
您也可以在管理筛选器中使用动态原始ID小部件:
fromdynamic_raw_id.adminimportDynamicRawIDMixinfromdynamic_raw_id.filtersimportDynamicRawIDFilterclassUserProfileAdmin(DynamicRawIDMixin,admin.ModelAdmin):list_filter=(('dynamic_raw_id_fk',DynamicRawIDFilter),)
自定义动态小部件的值
django dynamic raw id最酷的特性是能够定制输出 显示在DynamicRawIDWidget旁边的值的。有一个基本的 如果您只需要对象的__unicode__值,就可以实现。改变 显示的值就是实现正确的模板。
django dynamic raw id查找此模板结构dynamic_raw_id/<app>/<model>.html 和dynamic_raw_id/<app>/multi_<model>.html(用于多值查找)。
例如,如果我有一篇blog文章,其中包含我想要的Userdynamic\u raw\u id字段 显示为Firstname Lastname,我将创建模板 dynamic_raw_id/auth/user.html带有:
<span>{{object.0.first_name}}{{object.0.last_name}}</span>
自定义管理url前缀
如果您有管理员和位于不同 前缀超过/admin/dynamic_raw_id/您需要调整DYNAMIC_RAW_ID_MOUNT_URL js变量。
示例:
# In case the app is setup at /foobar/dynamic_raw_id/ url(r'^foobar/dynamic_raw_id/', include('dynamic_raw_id.urls')), # Provide a <script> window.DYNAMIC_RAW_ID_MOUNT_URL = "{% url "admin:index" %}"; </script>
理想的位置是adminbase_site.html模板。完整示例:
{%extends"admin/base.html"%}{%blocktitle%}{{title}} | {{site_title|default:_('Django site admin')}}{%endblock%}{%blockextrahead%}{{block.super}}<script>window.DYNAMIC_RAW_ID_MOUNT_URL="{%url"admin:index"%}";</script>{%endblock%}{%blockbranding%}<h1id="site-name"><ahref="{%url'admin:index'%}">{{site_header|default:_('Django administration')}}</a></h1>{%endblock%}{%blocknav-global%}{%endblock%}
测试和本地开发
testsuite使用selenium进行前端测试,我们需要firefox和 geckodriver待安装。你可以用 自制:
$ brew install geckodriver
在本地环境中使用:
$ cd django-dynamic-raw-id/ $ pipenv install --dev $ pipenv run test
或者使用tox测试各种django和python版本:
$ tox -r
您还可以通过调用 带有测试应用程序设置的django-admin工具:
$ cd django-dynamic-raw-id/ $ pipenv install --dev $ pipenv run django-admin $ pipenv run django-admin test
这还允许您在testserver中运行内部测试应用程序,以 预览django dynamic raw id正在执行的操作示例:
$ pipenv run django-admin migrate $ pipenv run django-admin createsuperuser $ pipenv run django-admin runserver
注意
默认设置文件是在.env文件中设置的,该文件 pipenv自动公开:
DJANGO_SETTINGS_MODULE=dynamic_raw_id.tests.testapp.settings
更改日志
v2.6(2019-06-21)
- 向后不兼容:已放弃对django<;1.11的支持。
- 向后不兼容:放弃了对Python3.4的支持。
- Django 2.2兼容性和测试。
- 常规代码清理。
- PIPENV支持本地开发。
- 一些关于图标和对齐的视觉修复。
v2.5(2018-12-09)
- Django 2.1兼容性和测试。
v2.4(2018-04-09)
- 修复了管理视图中缺少的图标。
- 修复了使用自定义/admin/url时缺少js处理的问题。
v2.3(2018-01-18)
- 向后不兼容:将项目重命名为django dynamic raw id。 以反映它实际在做什么。
- 修正了django 1.10及以下版本中的玻璃查找图标。
- 媒体资产加载的特定顺序。
第1.2版(2018-01-17)
- 多种修复和增强。
- 全硒测试套件。
- Django 2.0和Python3的兼容性。
- PipeNV支持。