一个简单的django应用程序,用于通过orm进行命令行搜索
django-grep-db的Python项目详细描述
django_grepdb是一个简单的命令行应用程序,提供基本的类似grep的搜索 使用orm的django模型字段。为了方便搜索标签, 数据库模板中的筛选器、命名URL等,但也可以用于快速 从命令行查找模型实例。
快速启动
将“django_grepdb”添加到已安装的应用程序设置中,如下所示:
INSTALLED_APPS = ( ... 'django_grepdb', )
或者,如果您有一个单独的开发设置文件,其中 扩展全局设置,如下所示:
INSTALLED_APPS = INSTALLED_APPS + ('django_grepdb',)
运行:
$ python manage.py grepdb <pattern> <app_label.Model.field_name>
用法
在上的所有文本字段中查找{% custom_template_tag.*%}的实例 来自appsprinkle的模型EmailAction,显示包含匹配项的行, 并生成管理链接(如果安装了django.contrib.admin):
$ python manage.py grepdb "{% custom_template_tag.*%}" sprinkle.EmailAction <class 'sprinkle.models.EmailAction'> text_field User registered (pk=13) localhost:8000/admin/sprinkle/emailaction/13/ <p>Hi {% custom_template_tag user.get_full_name %},</p> Password reset request (pk=24) localhost:8000/admin/sprinkle/emailaction/24/ <p>Hi, {% custom_template_tag user.get_full_name %}</p>
选项
选项是使用$ python manage.py grepdb --help列出的,但这里有一些 你可以使用django_grepdb。
搜索多个模型:
$ python manage.py grepdb <pattern> sprinkle.EmailAction cms.MarkdownNode
指定字段而不是查找所有文本字段:
$ python manage.py grepdb <pattern> sprinkle.EmailAction.body sprinkle.EmailAction.subject
查找charfield而不是textfield的所有实例:
$ python manage.py grepdb <pattern> sprinkle.EmailAction -c
显示匹配项的整个字段,而不仅仅是行:
$ python manage.py grepdb <pattern> sprinkle.EmailAction -sa
更改管理链接的主机名:
$ python manage.py grepdb <pattern> sprinkle.EmailAction -l https://dev.example.com
在设置中指定主机名键值对:
DJANGO_GREPDB_SITES = { 'default': 'https://staging.example.com' 'dev': 'https://dev.example.com', } $ python manage.py grepdb <pattern> sprinkle.EmailAction -l dev
在“设置”中指定预设配置:
DJANGO_GREPDB_PRESETS = { 'users': dict(identifiers=['auth.user', 'projects.userprofile'], field_type=['CharField', 'TextField'], ignore_case=True), 'templates': dict(identifiers=['sprinkle.EmailAction', 'cms.HTMLNode', 'cms.TextNode', 'cms.MarkdownNode']) $ python manage.py grepdb <pattern> -p templates