Version 2 (modified by eugene@…, 12 years ago) (diff)

added models

Removing the magic: the cheat sheet

Work in progress.

This document assumes a basic familiarity with Removing the magic changes. It is designed to be used as a simple cheat sheet during a conversion process providing links to relevant parts Removing the magic document. It is organized by functional areas: databases, settings, models, views, templates, and template tags. This document doesn't cover new functionality.


Optional (saves time): if your project doesn't have file in the project's directory, copy it from django/conf/project_template/.


Database changes are covered extensively in Database changes you'll need to make. Just execute appropriate SQL scripts.

Optional (saves space): package column of auth_permission table is not used anymore. You can drop it by executing following SQL statement (works for MySQL):

ALTER TABLE `auth_permission` DROP COLUMN `package`;

Eugene's note: after conversion I found that my permissions are screwed up. I regenerated them this way:

  • Delete a content of following tables (you can do it now):
    • auth_group_permissions
    • auth_permissions
    • auth_user_user_permissions
    • django_content_type
  • After you finished with code changes, run syncdb or syncdb. Don't do it now'''

It repopulates the content of said tables properly, but an administrator has to reassign group and user permissions again in Admin. Obviously it can be a problem, if you have hundreds of users with arcane permissions.


  1. If your applications still live in yourproject/apps/ directory, you can move them up one level: move yourproject/apps/yourapp/ to yourproject/yourapp.
  2. Relocate models by moving content of files in your yourapp/models/ directory to yourapp/ file.
  3. If your models use datetime or db modules without exporting them directly, add import statements.
  4. Relocate Model and Field classes: use django.db.models instead of django.core.meta.
  5. Convert the META.admin member to new inner class Admin of the model. Don't forget to remove all pesky commas at the end of lines.
  6. Remove from META following parameters: admin (see the previous step), module_name, exceptions, module_constants, and where_constraints. If now your class META is empty, delete it. Otherwise rename it to class Meta.
  7. Replace __repr__ with __str__.
  8. If you use _pre_save(), _post_save(), _pre_delete(), and/or _post_delete() hooks, replace them by overriding save() and delete() methods.



Template tags



If you decided to regenerate permissions, now is the good time to execute syncdb or syncdb. Remember that an administrator should reassign permissions to all users using Admin.

Back to Top