Skip to main content

Provides inspection conveniences for django models

Project description

https://api.travis-ci.org/tpisani/django-inspect.svg

Provides inspection conveniences for django models.

Features

Convenience attributes

all_fields

All model fields, including all relationships (back and forth).

fields

Only local fields, ie. any regular field and relationships (excluding backwards).

non_rel_fields

Basically the same thing as fields, but excluding all relationships.

fk_fields

Local foreign key fields.

backwards_fk_fields

Only backwards foreign key fields.

all_fk_fields

All foreign key fields (back and forth).

m2m_fields

Local many to many fields.

backwards_m2m_fields

Only backwards many to many fields.

all_m2m_fields

All many to many fields (back and forth).

Sub-inspecting

Futher inspection on relationship fields.

After inspecting a model (creating an Inspect instance) call:

inspect.sub_inspect("field")

Paths are supported too:

inspect.sub_inspect("field.other_field..")

It returns a new Inspect instance, containing information about the target model of the relationship field.

Installation

Available through pip:

$ pip install django-inspect

Usage

Simple inspection

from django.contrib.auth.models import User

from django_inspect import Inspect

inspect = Inspect(User)

# Using an instance/object is also possible.
# user = User()
# inspect = Inspect(user)

inspect.fields
[u'id', 'password', 'last_login', 'is_superuser', 'username',
 'first_name', 'last_name', 'email', 'is_staff', 'is_active',
 'date_joined', 'groups', 'user_permissions']

inspect.non_rel_fields
[u'id', 'password', 'last_login', 'is_superuser', 'username',
 'first_name', 'last_name', 'email', 'is_staff', 'is_active',
 'date_joined']

inspect.m2m_fields
['groups', 'user_permissions']

inspect.backwards_fk_fields
['logentry_set']

Sub-inspecting

from django.contrib.auth.models import User

from django_inspect import Inspect

inspect = Inspect(User)

sub_inspect = inspect.sub_inspect("user_permissions")

sub_inspect.all_fields
[u'id', 'name', 'content_type', 'codename']

futher_inspect = sub_inspect.sub_inspect("content_type")
futher_inspect.all_fields
[u'id', 'name', 'app_label', 'model']

# Sub-inspecting by path

sub_inspect = inspect.sub_inspect("user_permissions.content_type")

sub_inspect.all_fields
[u'id', 'name', 'app_label', 'model']

Testing

Install

Run make install to install dev requirements.

Run tests

Run make test to run tests.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

django-inspect-0.4.1.tar.gz (4.4 kB view details)

Uploaded Source

File details

Details for the file django-inspect-0.4.1.tar.gz.

File metadata

File hashes

Hashes for django-inspect-0.4.1.tar.gz
Algorithm Hash digest
SHA256 23d5a2d1aaed115e79e5f1344f239598824bed00af5fb5d221467b1154a59dd8
MD5 a9ae6870b2ebbd8503d572f16f612863
BLAKE2b-256 c7933cdf064b7d45d7fbdca42b86bdd291b45247dbf5b471569797cdc37a4f29

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page