可排序的变更列表、表格和堆叠的内联线、拖放和下拉列表
django-admin-sort的Python项目详细描述
#Django管理分类
[![django管理排序生成状态](https://travis-ci.org/rouxcode/django-admin-sort.svg"django管理排序生成状态")(https://travis ci.org/rouxcode/django管理排序)
使用现有的订单字段,灵活。
r/>
可以在pypi上找到最新的稳定版本。
将"admin sort"添加到项目的"settings.py"文件中的"installed apps"列表中。
installed apps=(
…,
"admin sort",
n sort
此django模块提供两个mixin类,添加到模型的现有类中
admin:
*`` admin sort.admin.sortableadminmixin``
*`` admin sort.admin.sortableinlineadminmixin``
它们稍微修改可排序模型的管理视图。无需从特殊的基本模型类派生模型类。
此模块的唯一要求是将位置值指定为用于排序的主字段。
class sortablebook(models.model):
title=models.charfield('title',null=true,blank=true,max_length=255)
my_order=models.positiveintegerfield(default=0,blank=false,null=false)
class meta(object):
ordering=("我的订单","title",)
这里的ordering字段名为"我的订单",但您可以选择任何其他名称。只有
两个约束:
*``my_order``是模型元类的``order``元组中的第一个字段。
*``my_order``的默认值必须为0。执行排序的javascript是1索引的,
因此这不会影响项目的顺序,即使您已经使用了0索引的排序字段。
django提供的用于存储排序位置的字段可以是任何类型的数字模型字段。使用以下模型字段之一:
*`` models.bigingerfield`
*`` models.integerfield``
*`` models.positiveintegerfield``(推荐)
*`` models.positivesmallintegerfield`(推荐用于小型集)
*`` models.smallintegerfield`
ls.decimalfield``或`` models.floatfield``,但不建议使用这些模型字段
。
**警告:**不要使此字段唯一!请参阅下面的原因。
\sortable list view
in``admin.py``,添加mixin类以增强排序功能(确保将
mixin类放在model.modeladmin之前):
from django.contrib import admin
from admin sort.admin import sortableadminmixin
从模型导入mymodel
class mymodel admin(sortableadminmixin,admin.modeladmin):
pass
admin.site.register(mymodel,mymodeladmin)
modeladmin界面的列表视图现在添加了一个具有敏感区域的列。
通过单击该区域,用户可以移动那一排上下。如果他想将其移动到另一个
页面,可以使用管理操作将其作为批量操作来执行。
odel
class mysubmodelinline(sortableinlineadminmixin,admin.tabularinline):或admin.stackedinline
model=mysubmodel
class mymodeladmin(admin.modeladmin):
inlines=(mysubmodelinline,)
admin.site.register(mymodel,mymodeladmin)
可排序堆叠内联视图的界面类似。如果单击堆叠的
内联字段标题,则可以上下移动整个内联表单。
然后,这些
行可以上下移动。
移动表格或堆叠的内联之后,保存模型窗体以保持其排序顺序。
et初始排序值。
django admin sort附带一个管理命令,该命令可用于预填充排序字段:
t迁移时,可以进行更高级的修改。
**注意:**如果不使用唯一值预填充排序字段,则在将此字段添加到现有模型后,尝试手动重新排序字段将失败。
Ion,可能会尝试在Ordering字段上添加一个唯一的索引。但在实践中,这有严重的缺点:
mysql有一个特性(或bug?)它要求在批量更新
唯一字段时使用"order by"子句。
事务中的所有字段,也不允许在批量更新时使用"order by"子句。
一个事务中的字段,然后
重建唯一索引。这里不能在更新期间使用'order by'子句,
从sql语义的角度来看,这是毫无意义的。
有关详细信息,请参见https://code.djangoproject.com/ticket/20708。
使用Postgres数据库。
代码::bash
git clone https://github.com/rouxcode/django admin sort.git
cd django admin sort/example/
./manage.py syncdb
./manage.py createsuperuser
./manage.py loaddata testapp/fixtures/data.json
./manage.py runserver
将浏览器指向http://localhost:8000/admin/,登录并转到*可排序的书籍*。在这里您可以
测试这个django应用程序的行为。
[![django管理排序生成状态](https://travis-ci.org/rouxcode/django-admin-sort.svg"django管理排序生成状态")(https://travis ci.org/rouxcode/django管理排序)
使用现有的订单字段,灵活。
r/>
可以在pypi上找到最新的稳定版本。
将"admin sort"添加到项目的"settings.py"文件中的"installed apps"列表中。
installed apps=(
…,
"admin sort",
n sort
此django模块提供两个mixin类,添加到模型的现有类中
admin:
*`` admin sort.admin.sortableadminmixin``
*`` admin sort.admin.sortableinlineadminmixin``
它们稍微修改可排序模型的管理视图。无需从特殊的基本模型类派生模型类。
此模块的唯一要求是将位置值指定为用于排序的主字段。
class sortablebook(models.model):
title=models.charfield('title',null=true,blank=true,max_length=255)
my_order=models.positiveintegerfield(default=0,blank=false,null=false)
class meta(object):
ordering=("我的订单","title",)
这里的ordering字段名为"我的订单",但您可以选择任何其他名称。只有
两个约束:
*``my_order``是模型元类的``order``元组中的第一个字段。
*``my_order``的默认值必须为0。执行排序的javascript是1索引的,
因此这不会影响项目的顺序,即使您已经使用了0索引的排序字段。
django提供的用于存储排序位置的字段可以是任何类型的数字模型字段。使用以下模型字段之一:
*`` models.bigingerfield`
*`` models.integerfield``
*`` models.positiveintegerfield``(推荐)
*`` models.positivesmallintegerfield`(推荐用于小型集)
*`` models.smallintegerfield`
ls.decimalfield``或`` models.floatfield``,但不建议使用这些模型字段
。
**警告:**不要使此字段唯一!请参阅下面的原因。
\sortable list view
in``admin.py``,添加mixin类以增强排序功能(确保将
mixin类放在model.modeladmin之前):
from django.contrib import admin
from admin sort.admin import sortableadminmixin
从模型导入mymodel
class mymodel admin(sortableadminmixin,admin.modeladmin):
pass
admin.site.register(mymodel,mymodeladmin)
modeladmin界面的列表视图现在添加了一个具有敏感区域的列。
通过单击该区域,用户可以移动那一排上下。如果他想将其移动到另一个
页面,可以使用管理操作将其作为批量操作来执行。
odel
class mysubmodelinline(sortableinlineadminmixin,admin.tabularinline):或admin.stackedinline
model=mysubmodel
class mymodeladmin(admin.modeladmin):
inlines=(mysubmodelinline,)
admin.site.register(mymodel,mymodeladmin)
可排序堆叠内联视图的界面类似。如果单击堆叠的
内联字段标题,则可以上下移动整个内联表单。
然后,这些
行可以上下移动。
移动表格或堆叠的内联之后,保存模型窗体以保持其排序顺序。
et初始排序值。
django admin sort附带一个管理命令,该命令可用于预填充排序字段:
t迁移时,可以进行更高级的修改。
**注意:**如果不使用唯一值预填充排序字段,则在将此字段添加到现有模型后,尝试手动重新排序字段将失败。
Ion,可能会尝试在Ordering字段上添加一个唯一的索引。但在实践中,这有严重的缺点:
mysql有一个特性(或bug?)它要求在批量更新
唯一字段时使用"order by"子句。
一个事务中的字段,然后
重建唯一索引。这里不能在更新期间使用'order by'子句,
从sql语义的角度来看,这是毫无意义的。
有关详细信息,请参见https://code.djangoproject.com/ticket/20708。
使用Postgres数据库。
代码::bash
git clone https://github.com/rouxcode/django admin sort.git
cd django admin sort/example/
./manage.py syncdb
./manage.py createsuperuser
./manage.py loaddata testapp/fixtures/data.json
./manage.py runserver
将浏览器指向http://localhost:8000/admin/,登录并转到*可排序的书籍*。在这里您可以
测试这个django应用程序的行为。