Commit 131de1cf authored by James Bennett's avatar James Bennett
Browse files

Fixed #10367: Added note to generic-relation docs explaining when it's...

Fixed #10367: Added note to generic-relation docs explaining when it's necessary to pass in field names to create a reverse relation.

git-svn-id: http://code.djangoproject.com/svn/django/trunk@10273 bcc190cf-cafb-0310-a4f2-bffc1f526a37
parent aea0bb68
Loading
Loading
Loading
Loading
+14 −1
Original line number Diff line number Diff line
@@ -303,7 +303,20 @@ be used to retrieve their associated ``TaggedItems``::
    >>> b.tags.all()
    [<TaggedItem: django>, <TaggedItem: python>]

If you don't add the reverse relationship, you can do the lookup manually::
Just as :class:`django.contrib.contenttypes.generic.GenericForeignKey`
accepts the names of the content-type and object-ID fields as
arguments, so too does ``GenericRelation``; if the model which has the
generic foreign key is using non-default names for those fields, you
must pass the names of the fields when setting up a
``GenericRelation`` to it. For example, if the ``TaggedItem`` model
referred to above used fields named ``content_type_fk`` and
``object_primary_key`` to create its generic foreign key, then a
``GenericRelation`` back to it would need to be defined like so::

    tags = generic.GenericRelation('content_type_fk', 'object_primary_key')

Of course, if you don't add the reverse relationship, you can do the
same types of lookups manually::

    >>> b = Bookmark.objects.get(url='http://www.djangoproject.com/')
    >>> bookmark_type = ContentType.objects.get_for_model(b)