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
This commit is contained in:
James Bennett 2009-03-31 17:14:10 +00:00
parent aea0bb68e0
commit 131de1cf2b
1 changed files with 14 additions and 1 deletions

View File

@ -303,7 +303,20 @@ be used to retrieve their associated ``TaggedItems``::
>>> b.tags.all() >>> b.tags.all()
[<TaggedItem: django>, <TaggedItem: python>] [<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/') >>> b = Bookmark.objects.get(url='http://www.djangoproject.com/')
>>> bookmark_type = ContentType.objects.get_for_model(b) >>> bookmark_type = ContentType.objects.get_for_model(b)