A simple Django app for command-line searching via the ORM
Project description
django_grepdb is a simple command-line app to provide basic grep-like searching of Django model fields using the ORM. Written to facilitate searching for a tag, filter, named url etc in templates in the database, but can also be used to quickly find model instances from the command line.
Quick start
Add “django_grepdb” to your INSTALLED_APPS setting like this:
INSTALLED_APPS = ( ... 'django_grepdb', )
or, if you have a separate settings file for development in which you extend your global settings, like this:
INSTALLED_APPS = INSTALLED_APPS + ('django_grepdb',)
Run:
$ python manage.py grepdb <pattern> <app_label.Model.field_name>
Usage
Find instances of {% custom_template_tag.*%} in all text fields on the model EmailAction from app sprinkle, show lines containing matches, and generate admin links (if django.contrib.admin is installed):
$ 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>
Options
Options are listed using $ python manage.py grepdb --html but here are some of the things you can do with django_grepdb.
Search multiple models:
$ python manage.py grepdb <pattern> sprinkle.EmailAction cms.MarkdownNode
Specify fields instead of finding all text fields:
$ python manage.py grepdb <pattern> sprinkle.EmailAction.body sprinkle.EmailAction.subject
Find all instances of CharField instead of TextField:
$ python manage.py grepdb <pattern> sprinkle.EmailAction -c
Show the whole field of a match rather than just the line:
$ python manage.py grepdb <pattern> sprinkle.EmailAction -sa
Change the hostname of the admin links:
$ python manage.py grepdb <pattern> sprinkle.EmailAction -l https://dev.example.com
Specify hostname key-value pairs in settings:
DJANGO_GREPDB_SITES = { 'default': 'https://staging.example.com' 'dev': 'https://dev.example.com', } $ python manage.py grepdb <pattern> sprinkle.EmailAction -l dev
Specify preset configurations in settings:
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
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for django_grep_db-1.1.1-py2.py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 13edfbacf013e73a8e75e8e33fa1fb53246ed114d275986ae240683535e45c4b |
|
MD5 | d9976cecfbc504541b69661b00d41e38 |
|
BLAKE2b-256 | 8150693e7f0f74855afacc744c7df60b469f8c7f85b989618f8b853aa9420b02 |