Kaydet (Commit) 6c36d4c4 authored tarafından Russell Keith-Magee's avatar Russell Keith-Magee

Fixed #10981 -- Clarified documentation regarding lazy cross-application…

Fixed #10981 -- Clarified documentation regarding lazy cross-application relationships. Thanks to Ramiro for the suggestion.

git-svn-id: http://code.djangoproject.com/svn/django/trunk@10971 bcc190cf-cafb-0310-a4f2-bffc1f526a37
üst 74131e82
...@@ -800,21 +800,22 @@ you can use the name of the model, rather than the model object itself:: ...@@ -800,21 +800,22 @@ you can use the name of the model, rather than the model object itself::
class Manufacturer(models.Model): class Manufacturer(models.Model):
# ... # ...
Note, however, that this only refers to models in the same ``models.py`` file -- .. versionadded:: 1.0
you cannot use a string to reference a model defined in another application or
imported from elsewhere.
.. versionchanged:: 1.0
Refering models in other applications must include the application label.
To refer to models defined in another To refer to models defined in another application, you can explicitly specify
application, you must instead explicitly specify the application label. For a model with the full application label. For example, if the ``Manufacturer``
example, if the ``Manufacturer`` model above is defined in another application model above is defined in another application called ``production``, you'd
called ``production``, you'd need to use:: need to use::
class Car(models.Model): class Car(models.Model):
manufacturer = models.ForeignKey('production.Manufacturer') manufacturer = models.ForeignKey('production.Manufacturer')
This sort of reference can be useful when resolving circular import
dependencies between two applications.
Database Representation
~~~~~~~~~~~~~~~~~~~~~~~
Behind the scenes, Django appends ``"_id"`` to the field name to create its Behind the scenes, Django appends ``"_id"`` to the field name to create its
database column name. In the above example, the database table for the ``Car`` database column name. In the above example, the database table for the ``Car``
model will have a ``manufacturer_id`` column. (You can change this explicitly by model will have a ``manufacturer_id`` column. (You can change this explicitly by
...@@ -824,6 +825,9 @@ deal with the field names of your model object. ...@@ -824,6 +825,9 @@ deal with the field names of your model object.
.. _foreign-key-arguments: .. _foreign-key-arguments:
Arguments
~~~~~~~~~
:class:`ForeignKey` accepts an extra set of arguments -- all optional -- that :class:`ForeignKey` accepts an extra set of arguments -- all optional -- that
define the details of how the relation works. define the details of how the relation works.
...@@ -871,6 +875,9 @@ the model is related. This works exactly the same as it does for ...@@ -871,6 +875,9 @@ the model is related. This works exactly the same as it does for
:class:`ForeignKey`, including all the options regarding :ref:`recursive :class:`ForeignKey`, including all the options regarding :ref:`recursive
<recursive-relationships>` and :ref:`lazy <lazy-relationships>` relationships. <recursive-relationships>` and :ref:`lazy <lazy-relationships>` relationships.
Database Representation
~~~~~~~~~~~~~~~~~~~~~~~
Behind the scenes, Django creates an intermediary join table to represent the Behind the scenes, Django creates an intermediary join table to represent the
many-to-many relationship. By default, this table name is generated using the many-to-many relationship. By default, this table name is generated using the
names of the two tables being joined. Since some databases don't support table names of the two tables being joined. Since some databases don't support table
...@@ -882,6 +889,9 @@ You can manually provide the name of the join table using the ...@@ -882,6 +889,9 @@ You can manually provide the name of the join table using the
.. _manytomany-arguments: .. _manytomany-arguments:
Arguments
~~~~~~~~~
:class:`ManyToManyField` accepts an extra set of arguments -- all optional -- :class:`ManyToManyField` accepts an extra set of arguments -- all optional --
that control how the relationship functions. that control how the relationship functions.
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment