Django-inspect-model

Build Status

Django-inspect-model is a model inspection utility for Django. It allows you to easily list all available “items” on a model, and get their value.

An item is either:

  • a django field (standard field or relation field)
  • a standard attribute
  • a method that only takes one attribute: ‘self’
  • a property

The code is generic enough to be applied on just any python object, so Django isn’t a requirement. However, it was tailored towards Django models.

Install

Using pip:

pip install django-inspect-model

Usage

Instantiate inspect_model.InspectModel with your model class or instance, and profit.

>>> from django.contrib.comments.models import Comment
>>> from inspect_model import InspectModel
>>> im = InspectModel(Comment)
>>> im.fields
['comment', 'id', 'ip_address', 'is_public', 'is_removed', 'object_pk',
'submit_date', 'user_email', 'user_name', 'user_url']
>>> im.relation_fields
['content_type', 'site', 'user']
>>> im.many_fields
['flags']
>>> im.attributes
[]
>>> im.methods
['get_as_text', 'get_content_object_url']
>>> im.properties
['email', 'name', 'pk', 'url', 'userinfo']
>>> im.items
['comment', 'content_type', 'email', 'flags', 'get_as_text',
'get_content_object_url', u'id', 'ip_address', 'is_public', 'is_removed',
'name', 'object_pk', 'pk', 'site', 'submit_date', 'url', 'user',
'user_email', 'user_name', 'user_url', 'userinfo']

Hacking

Setup your environment:

git clone https://github.com/magopian/django-inspect-model.git
cd django-inspect-model

Hack and run the tests using Tox to test on all the supported python and Django versions:

make test

To build the docs:

make docs

Changelog

0.8 (unreleased)

0.7 (2014-09-15)

  • now compatible with Django1.7
  • don’t require Django, so it may be used on any python code
  • small optimizations (use sets instead of lists)

0.6 (2014-09-15)

  • can now also inspect GenericForeignKey and ContentType fields, thanks @aschriner, Andy and @jhg

0.5 (2013-07-28)

  • compatible python 3.3
  • now also supports properties inspection (thanks Raffaele Colace)

Older versions

  • 0.4: renamed get_FOO methods to update_FOO, self.items uses a sorted set internally
  • 0.3: added self.relation_fields and self.many_fields
  • 0.2: added self.items
  • 0.1: initial version

Indices and tables