Secara pribadi, saya menemukan menggunakan pycharm IDE membantu mempercepat pengembangan Django secara signifikan. Juga di shell Django Anda dapat menggunakan fitur ipython untuk mendapatkan dokumen dan kode sumber, dengan mengetikkan sesuatu dan diikuti oleh? (info dasar) atau ?? (Kode sumber). Juga fitur ipython lainnya seperti penyelesaian tab (hanya sedalam satu level) sangat membantu.
In [1]: from django.contrib.auth.models import User
In [2]: User ?
Type: ModelBase
Base Class: <class 'django.db.models.base.ModelBase'>
String Form: <class 'django.contrib.auth.models.User'>
Namespace: Interactive
File: /usr/local/lib/python2.6/dist-packages/Django-1.2.5-py2.6.egg/django/contrib/auth/models.py
Docstring:
Users within the Django authentication system are represented by this model.
Username and password are required. Other fields are optional.
Constructor information:
Definition: User(self, *args, **kwargs)
In [3]: User ??
Type: ModelBase
Base Class: <class 'django.db.models.base.ModelBase'>
String Form: <class 'django.contrib.auth.models.User'>
Namespace: Interactive
File: /usr/local/lib/python2.6/dist-packages/Django-1.2.5-py2.6.egg/django/contrib/auth/models.py
Source:
class User(models.Model):
"""
Users within the Django authentication system are represented by this model.
Username and password are required. Other fields are optional.
"""
username = models.CharField(_('username'), max_length=30, unique=True, help_text=_("Required. 30 characters or fewer. Letters, numbers and @/./+/-/_ characters"))
first_name = models.CharField(_('first name'), max_length=30, blank=True)
last_name = models.CharField(_('last name'), max_length=30, blank=True)
email = models.EmailField(_('e-mail address'), blank=True)
password = models.CharField(_('password'), max_length=128, help_text=_("Use '[algo]$[salt]$[hexdigest]' or use the <a href=\"password/\">change password form</a>."))
is_staff = models.BooleanField(_('staff status'), default=False, help_text=_("Designates whether the user can log into this admin site."))
is_active = models.BooleanField(_('active'), default=True, help_text=_("Designates whether this user should be treated as active. Unselect this instead of deleting accounts."))
is_superuser = models.BooleanField(_('superuser status'), default=False, help_text=_("Designates that this user has all permissions without explicitly assigning them."))
last_login = models.DateTimeField(_('last login'), default=datetime.datetime.now)
date_joined = models.DateTimeField(_('date joined'), default=datetime.datetime.now)
groups = models.ManyToManyField(Group, verbose_name=_('groups'), blank=True,
help_text=_("In addition to the permissions manually assigned, this user will also get all permissions granted to each group he/she is in."))
user_permissions = models.ManyToManyField(Permission, verbose_name=_('user permissions'), blank=True)
objects = UserManager()
class Meta:
verbose_name = _('user')
[...]