From 131de1cf2b91dd5743d8994b3b0efea3639de7db Mon Sep 17 00:00:00 2001 From: James Bennett Date: Tue, 31 Mar 2009 17:14:10 +0000 Subject: [PATCH] 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 --- docs/ref/contrib/contenttypes.txt | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/docs/ref/contrib/contenttypes.txt b/docs/ref/contrib/contenttypes.txt index 2a1c831408..42a8a8142b 100644 --- a/docs/ref/contrib/contenttypes.txt +++ b/docs/ref/contrib/contenttypes.txt @@ -303,7 +303,20 @@ be used to retrieve their associated ``TaggedItems``:: >>> b.tags.all() [, ] -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)