一个django应用程序,用于为管理中的模型添加对象工具
django-object-actions的Python项目详细描述
django对象操作图片::https://travis ci.org/crccheck/django object actions.png
:目标:https://travis ci.org/crccheck/django object actions
…图片::https://coveralls.io/repos/crccheck/django object actions/badge.png
:target:https://coveralls.io/r/crccheck/django object actions
为什么它们不能像执行
django管理操作那样简单?现在可以了。
《快速入门指南》
---------
objectactions
class article admin(djangoobjectactions,admin.modeladmin):
def publish_this(self,request,obj):
publish_obj(obj)
publish_this.label="publish"可选
publish_this.short_description="submit this article"可选
usage
----
>定义新的工具操作就像定义常规的"管理操作"一样
<;https://docs.djangoproject.com/en/dev/ref/contrib/admin/actions/>;`。主要的
区别在于为更改视图编写的操作函数将采用
对象实例而不是queryset(请参见下面的*重新使用管理操作*)。
tool actions是通过将它们放在
模型管理的"更改操作"属性中来公开的。您还可以将工具操作添加到变更列表视图。
您将获得一个类似于常规管理操作的查询集::
from django_object_actions import djangoobjectactions
class mymodeladmin(djangoobactions,admin.modeladmin):
def toolfunc(self,request,obj):
pass
toolfunc.label="这将是按钮的标签"可选
toolfunc.short_description="这将是按钮的工具提示"可选
def make懔u published(modeladmin,request,queryset):
queryset.update(status='p')
change懔actions=('toolfunc',)
changelist懔actions=('make懔pu actions=('make懔published',)
就像管理操作一样,您可以用"self.message\u user"发送消息。
通常,您会对对象执行某些操作并返回到同一个位置,但是如果您返回一个httpresponse,它会跟随它(嘿,就像管理操作一样!)
br/>>如果您的管理员修改了``get\u url`````````change\u view`````````````````````````````````````````````````````````````>
如果您希望先前存在的管理操作同时也是一个更改操作,请添加
`` take``takes```````````````````````````````````````````````
来自django_object_actions导入(djangoobjectactions,
采用实例_或_queryset)
类robotadmin(djangoobjectactions,admin.modeladmin):
狙击……
@take-instance-cuu或queryset
def拧紧凸耳螺母(self、请求、queryset):
queryset.update(lugnututs=f('lug nuts')-1)
chang-actions=[‘拧紧凸耳螺母’]
actions=[‘拧紧凸耳螺母’]
定制管理操作
`````````````````````````````````````````````````````````````````````````````````
至GIVe操作一些有用的标题工具提示,添加一个"short-description"属性,类似于管理操作的工作方式::
def increment-vote(self,request,obj):
obj.vots=obj.vots+1
obj.save()
increment-vote.short-description="increment the vote count by one"
actions将根据功能。您可以用一个"label"属性来覆盖它:
def increment\u vote(self,request,obj):
obj.vots=obj.vots+1
obj.save()
increment\u vote.label="vote++"
添加django小部件样式的"attrs"属性::
def increment掴vote(self,request,obj):
obj.vots=obj.vots+1
obj.save()
increment掴vote.attrs={
"class":"addlink",
``````````````````````````````````
您可以通过定义自己的自定义
``get_change_actions()``方法以编程方式禁用已注册的操作。在此示例中,某些操作仅适用于特定对象状态(即,如果帐户已关闭,则您不应关闭公司帐户):
def get_change_actions(self、request、object_id、form_url):
actions=super(polladmin、self)。get_change_操作(请求、对象id、表单url)
操作=列表(操作)
如果不是请求,则为用户超级用户:
返回[]
obj=self.model.objects.get(pk=对象id)
如果是obj.question.endswith('?')用法:
actions.remove('question-mark')
return actions
要做的是复制模板django object actions/change_form.html `` django的某个地方
template loader`将找到它
<;https://docs.djangoproject.com/en/dev/ref/settings/template dirs>;`.
如果您根本不打算使用模板定制,请不要添加
`` django_object_actions``到您的``installed_apps``中,并使用
``basedjangoobjectactions``而不是'djangoobjectactions``.
更多示例
----
django.http导入httpresponseredit
url=f'https://example.com/{obj.id}'
返回httpresponseredit(url)
`` django object actions``期望函数是模型管理的方法。
而django为它们的管理操作提供了更多的选项。
2.如果您提供了自己的自定义"change-form.html",则还需要在"我们的更改表单"的相关位中手动复制
<;https://github.com/crccheck/django-obj ect-actions/blob/master/django-obj
ect-actions/templates/django-object-actions/change-form.html>;`。您也可以使用"from django_object_actions import basedjangoobjectactions"来代替。安全性。本文假设django管理员中的每个人都属于这里。权限应该在您自己的
操作中强制执行,与此无关。更好的默认安全性是
为将来规划的。
demo-admin&docker-images
----
您可以使用这些docker对多个版本的django试用demo-admin
images:https://hub.docker.com/r/crccheck/django-object-actions/
这将运行基于
"polls"教程的`./example_project``中的示例django项目。`` admin.py``演示如何使用此应用程序。
升级virtualenv(使用virtualenvwrapper)
mkvirtualenv django对象操作
#修改您的路径,以便我们可以引用从根目录开始的包
add2virtualenv.
使测试运行测试套件
使快速启动运行'make resetdb'和一些额外步骤
这将安装django的最新稳定版本。您还可以安装特定版本的django和"pip install-r requirements.txt"。
make命令提供了各种帮助程序。键入"make help"并查看"makefile"以查看您可以执行的其他操作。
最小行操作>;`.
django对象操作与
`django对象工具<;https://github.com/praekelt/django对象工具>;`,
非常相似,但不需要修改URL.py,不做任何具有权限的特殊操作,使用与生成"admin
操作<;https://docs.djangoproject.com/en/dev/ref/contrib/admin/actions/作为modeladmin方法的操作>;`
在django中。
:目标:https://travis ci.org/crccheck/django object actions
…图片::https://coveralls.io/repos/crccheck/django object actions/badge.png
:target:https://coveralls.io/r/crccheck/django object actions
为什么它们不能像执行
django管理操作那样简单?现在可以了。
《快速入门指南》
---------
objectactions
class article admin(djangoobjectactions,admin.modeladmin):
def publish_this(self,request,obj):
publish_obj(obj)
publish_this.label="publish"可选
publish_this.short_description="submit this article"可选
usage
----
>定义新的工具操作就像定义常规的"管理操作"一样
<;https://docs.djangoproject.com/en/dev/ref/contrib/admin/actions/>;`。主要的
区别在于为更改视图编写的操作函数将采用
对象实例而不是queryset(请参见下面的*重新使用管理操作*)。
tool actions是通过将它们放在
模型管理的"更改操作"属性中来公开的。您还可以将工具操作添加到变更列表视图。
您将获得一个类似于常规管理操作的查询集::
from django_object_actions import djangoobjectactions
class mymodeladmin(djangoobactions,admin.modeladmin):
def toolfunc(self,request,obj):
pass
toolfunc.label="这将是按钮的标签"可选
toolfunc.short_description="这将是按钮的工具提示"可选
def make懔u published(modeladmin,request,queryset):
queryset.update(status='p')
change懔actions=('toolfunc',)
changelist懔actions=('make懔pu actions=('make懔published',)
就像管理操作一样,您可以用"self.message\u user"发送消息。
通常,您会对对象执行某些操作并返回到同一个位置,但是如果您返回一个httpresponse,它会跟随它(嘿,就像管理操作一样!)
br/>>如果您的管理员修改了``get\u url`````````change\u view`````````````````````````````````````````````````````````````>
如果您希望先前存在的管理操作同时也是一个更改操作,请添加
`` take``takes```````````````````````````````````````````````
来自django_object_actions导入(djangoobjectactions,
采用实例_或_queryset)
类robotadmin(djangoobjectactions,admin.modeladmin):
狙击……
@take-instance-cuu或queryset
def拧紧凸耳螺母(self、请求、queryset):
queryset.update(lugnututs=f('lug nuts')-1)
chang-actions=[‘拧紧凸耳螺母’]
actions=[‘拧紧凸耳螺母’]
定制管理操作
`````````````````````````````````````````````````````````````````````````````````
至GIVe操作一些有用的标题工具提示,添加一个"short-description"属性,类似于管理操作的工作方式::
def increment-vote(self,request,obj):
obj.vots=obj.vots+1
obj.save()
increment-vote.short-description="increment the vote count by one"
actions将根据功能。您可以用一个"label"属性来覆盖它:
def increment\u vote(self,request,obj):
obj.vots=obj.vots+1
obj.save()
increment\u vote.label="vote++"
添加django小部件样式的"attrs"属性::
def increment掴vote(self,request,obj):
obj.vots=obj.vots+1
obj.save()
increment掴vote.attrs={
"class":"addlink",
``````````````````````````````````
您可以通过定义自己的自定义
``get_change_actions()``方法以编程方式禁用已注册的操作。在此示例中,某些操作仅适用于特定对象状态(即,如果帐户已关闭,则您不应关闭公司帐户):
def get_change_actions(self、request、object_id、form_url):
actions=super(polladmin、self)。get_change_操作(请求、对象id、表单url)
操作=列表(操作)
如果不是请求,则为用户超级用户:
返回[]
obj=self.model.objects.get(pk=对象id)
如果是obj.question.endswith('?')用法:
actions.remove('question-mark')
return actions
要做的是复制模板django object actions/change_form.html `` django的某个地方
template loader`将找到它
<;https://docs.djangoproject.com/en/dev/ref/settings/template dirs>;`.
如果您根本不打算使用模板定制,请不要添加
`` django_object_actions``到您的``installed_apps``中,并使用
``basedjangoobjectactions``而不是'djangoobjectactions``.
更多示例
----
django.http导入httpresponseredit
url=f'https://example.com/{obj.id}'
返回httpresponseredit(url)
`` django object actions``期望函数是模型管理的方法。
而django为它们的管理操作提供了更多的选项。
2.如果您提供了自己的自定义"change-form.html",则还需要在"我们的更改表单"的相关位中手动复制
<;https://github.com/crccheck/django-obj ect-actions/blob/master/django-obj
ect-actions/templates/django-object-actions/change-form.html>;`。您也可以使用"from django_object_actions import basedjangoobjectactions"来代替。安全性。本文假设django管理员中的每个人都属于这里。权限应该在您自己的
操作中强制执行,与此无关。更好的默认安全性是
为将来规划的。
demo-admin&docker-images
----
您可以使用这些docker对多个版本的django试用demo-admin
images:https://hub.docker.com/r/crccheck/django-object-actions/
这将运行基于
"polls"教程的`./example_project``中的示例django项目。`` admin.py``演示如何使用此应用程序。
升级virtualenv(使用virtualenvwrapper)
mkvirtualenv django对象操作
#修改您的路径,以便我们可以引用从根目录开始的包
add2virtualenv.
使测试运行测试套件
使快速启动运行'make resetdb'和一些额外步骤
这将安装django的最新稳定版本。您还可以安装特定版本的django和"pip install-r requirements.txt"。
make命令提供了各种帮助程序。键入"make help"并查看"makefile"以查看您可以执行的其他操作。
最小行操作>;`.
django对象操作与
`django对象工具<;https://github.com/praekelt/django对象工具>;`,
非常相似,但不需要修改URL.py,不做任何具有权限的特殊操作,使用与生成"admin
操作<;https://docs.djangoproject.com/en/dev/ref/contrib/admin/actions/作为modeladmin方法的操作>;`
在django中。