Skip to content

Instantly share code, notes, and snippets.

@loic
Created March 5, 2014 17:55
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save loic/9372614 to your computer and use it in GitHub Desktop.
Save loic/9372614 to your computer and use it in GitHub Desktop.
diff --git a/django/contrib/contenttypes/fields.py b/django/contrib/contenttypes/fields.py
index 39fbe0e..dab3d69 100644
--- a/django/contrib/contenttypes/fields.py
+++ b/django/contrib/contenttypes/fields.py
@@ -30,13 +30,11 @@ class GenericForeignKey(six.with_metaclass(RenameGenericForeignKeyMethods)):
fields.
"""
- def __init__(self, ct_field="content_type", fk_field="object_id", for_concrete_model=True,
- related_name=None):
+ def __init__(self, ct_field="content_type", fk_field="object_id", for_concrete_model=True):
self.ct_field = ct_field
self.fk_field = fk_field
self.for_concrete_model = for_concrete_model
self.editable = False
- self.related_name = related_name
def contribute_to_class(self, cls, name):
self.name = name
@@ -242,11 +240,11 @@ class GenericForeignKey(six.with_metaclass(RenameGenericForeignKeyMethods)):
class GenericRelation(ForeignObject):
"""Provides an accessor to generic related objects (e.g. comments)"""
- def __init__(self, to, related_name='+', **kwargs):
+ def __init__(self, to, **kwargs):
kwargs['verbose_name'] = kwargs.get('verbose_name', None)
kwargs['rel'] = GenericRel(
- self, to, related_name=related_name,
- limit_choices_to=kwargs.pop('limit_choices_to', None))
+ self, to, limit_choices_to=kwargs.pop('limit_choices_to', None),
+ related_query_name=kwargs.pop('related_query_name', None))
# Override content-type/object-id field names on the related class
self.object_id_field_name = kwargs.pop("object_id_field", "object_id")
self.content_type_field_name = kwargs.pop("content_type_field", "content_type")
@@ -527,6 +525,7 @@ def create_generic_related_manager(superclass):
class GenericRel(ForeignObjectRel):
- def __init__(self, field, to, related_name=None, limit_choices_to=None):
- super(GenericRel, self).__init__(field=field, to=to, related_name=related_name,
- limit_choices_to=limit_choices_to, on_delete=DO_NOTHING)
+ def __init__(self, field, to, related_name=None, limit_choices_to=None, related_query_name=None):
+ super(GenericRel, self).__init__(field=field, to=to, related_name=related_query_name or '+',
+ limit_choices_to=limit_choices_to, on_delete=DO_NOTHING,
+ related_query_name=related_query_name)
diff --git a/tests/generic_relations/models.py b/tests/generic_relations/models.py
index 12790f6..5d24e01 100644
--- a/tests/generic_relations/models.py
+++ b/tests/generic_relations/models.py
@@ -68,7 +68,7 @@ class Animal(models.Model):
common_name = models.CharField(max_length=150)
latin_name = models.CharField(max_length=150)
- tags = GenericRelation(TaggedItem, related_name='animal')
+ tags = GenericRelation(TaggedItem, related_query_name='animal')
comparisons = GenericRelation(Comparison,
object_id_field="object_id1",
content_type_field="content_type1")
@@ -116,7 +116,7 @@ class Rock(Mineral):
class ManualPK(models.Model):
id = models.IntegerField(primary_key=True)
- tags = GenericRelation(TaggedItem, related_name='manualpk')
+ tags = GenericRelation(TaggedItem, related_query_name='manualpk')
class ForProxyModelModel(models.Model):
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment