Go to file
Aymeric Augustin aff57793b4 Simplified the implementation of register_model.
register_model is called exactly once in the entire Django code base, at the
bottom of ModelBase.__new__:

    new_class._meta.apps.register_model(new_class._meta.app_label, new_class)

ModelBase.__new__ exits prematurely 120 lines earlier (sigh) if a model with
the same name is already registered:

    if new_class._meta.apps.get_registered_model(new_class._meta.app_label, name):
        return

(This isn't the exact code, but it's equivalent.)

apps.register_model and apps.get_registered_model are essentially a setter and
a getter for apps.all_models, and apps.register_model is the only setter. As a
consequence, new_class._meta.apps.all_models cannot change in-between.

Considering that name == new_class.__name__, we can conclude that
register_model(app_label, model) is always called with such arguments that
get_registered_model(app_label, model.__name__) returns None.

Considering that model._meta.model_name == model.__name__.lower(), and looking
at the implementation of register_model and get_registered_model, this proves
that self.all_models[app_label] doesn't contain model._meta.model_name in
register_model, allowing us to simplify the implementation.
2013-12-28 09:34:46 +01:00
.tx Updated Transifex links to the Django project 2013-04-25 10:35:51 +02:00
django Simplified the implementation of register_model. 2013-12-28 09:34:46 +01:00
docs Fixed #21650 -- Corrected bad advice for plural translation. 2013-12-27 10:02:22 -05:00
extras Fixed E125 pep8 warnings 2013-11-28 08:50:11 -05:00
scripts Improved translation maintenance script 2013-12-12 15:38:50 +01:00
tests Amend test table name so it doesn't clash. 2013-12-27 21:02:39 -03:00
.gitattributes Force Unix-style line-endings for some helper files in staticfiles_tests. 2013-09-30 22:14:54 -03:00
.gitignore Added __pycache__ to gitignore 2013-09-19 06:37:23 -04:00
.hgignore Added __pycache__ to gitignore 2013-09-19 06:37:23 -04:00
AUTHORS Fixed #21497 -- Forced conversion to bytes for very long index names 2013-11-24 13:15:50 -05:00
CONTRIBUTING.rst Fixed #21609 -- Amended CONTRIBUTING.rst pull request guidelines. 2013-12-26 13:41:03 -05:00
INSTALL Bumped minimum Python version requirement to 2.7 in Django 1.7. 2013-07-01 12:01:59 +02:00
LICENSE Whitespace cleanup. 2013-10-10 16:49:20 -04:00
MANIFEST.in Fixed #19252 -- Added support for wheel packages. 2013-05-01 13:46:06 +02:00
README.rst Fix bullet formatting for README.rst. 2012-04-28 21:20:39 +01:00
setup.cfg Fixed E127 pep8 warnings. 2013-12-14 11:59:15 -05:00
setup.py Bumped minimum Python version requirement to 2.7 in Django 1.7. 2013-07-01 12:01:59 +02:00

README.rst

Django is a high-level Python Web framework that encourages rapid development
and clean, pragmatic design. Thanks for checking it out.

All documentation is in the "docs" directory and online at
http://docs.djangoproject.com/en/dev/. If you're just getting started, here's
how we recommend you read the docs:

* First, read docs/intro/install.txt for instructions on installing Django.

* Next, work through the tutorials in order (docs/intro/tutorial01.txt,
  docs/intro/tutorial02.txt, etc.).

* If you want to set up an actual deployment server, read
  docs/howto/deployment/index.txt for instructions.

* You'll probably want to read through the topical guides (in docs/topics)
  next; from there you can jump to the HOWTOs (in docs/howto) for specific
  problems, and check out the reference (docs/ref) for gory details.

* See docs/README for instructions on building an HTML version of the docs.

Docs are updated rigorously. If you find any problems in the docs, or think they
should be clarified in any way, please take 30 seconds to fill out a ticket
here:

http://code.djangoproject.com/newticket

To get more help:

* Join the #django channel on irc.freenode.net. Lots of helpful people hang out
  there. Read the archives at http://django-irc-logs.com/.

* Join the django-users mailing list, or read the archives, at
  http://groups.google.com/group/django-users.

To contribute to Django:

* Check out http://www.djangoproject.com/community/ for information about
  getting involved.

To run Django's test suite:

* Follow the instructions in the "Unit tests" section of
  docs/internals/contributing/writing-code/unit-tests.txt, published online at
  https://docs.djangoproject.com/en/dev/internals/contributing/writing-code/unit-tests/#running-the-unit-tests