Skip to content

Instantly share code, notes, and snippets.

@Kniyl
Created May 12, 2015 23:08
Show Gist options
  • Save Kniyl/2b6309e9db05083fe8b4 to your computer and use it in GitHub Desktop.
Save Kniyl/2b6309e9db05083fe8b4 to your computer and use it in GitHub Desktop.
mezzanine.generic.fields module fix for related_model
diff --git a/mezzanine/generic/fields.py b/mezzanine/generic/fields.py
index 277b04d..cd3160c 100644
--- a/mezzanine/generic/fields.py
+++ b/mezzanine/generic/fields.py
@@ -36,9 +36,6 @@ class BaseGenericRelation(GenericRelation):
attribute for the ``to`` argument.
"""
kwargs.setdefault("object_id_field", "object_pk")
- to = getattr(self, "related_model", None)
- if to:
- kwargs.setdefault("to", to)
super(BaseGenericRelation, self).__init__(*args, **kwargs)
def contribute_to_class(self, cls, name):
@@ -134,9 +131,12 @@ class CommentsField(BaseGenericRelation):
deleted.
"""
- related_model = "generic.ThreadedComment"
fields = {"%s_count": IntegerField(editable=False, default=0)}
+ def __init__(self, *args, **kwargs):
+ kwargs.setdefault("to", "generic.ThreadedComment")
+ super(CommentsField, self).__init__(*args, **kwargs)
+
def related_items_changed(self, instance, related_manager):
"""
Stores the number of comments. A custom ``count_filter``
@@ -160,7 +160,6 @@ class KeywordsField(BaseGenericRelation):
searching.
"""
- related_model = "generic.AssignedKeyword"
fields = {"%s_string": CharField(editable=False, blank=True,
max_length=500)}
@@ -170,6 +169,7 @@ class KeywordsField(BaseGenericRelation):
admin class fieldsets and pass validation, and also so that
it shows up in the admin form.
"""
+ kwargs.setdefault("to", "generic.AssignedKeyword")
super(KeywordsField, self).__init__(*args, **kwargs)
self.editable = True
@@ -247,11 +247,14 @@ class RatingField(BaseGenericRelation):
fields when a rating is saved or deleted.
"""
- related_model = "generic.Rating"
fields = {"%s_count": IntegerField(default=0, editable=False),
"%s_sum": IntegerField(default=0, editable=False),
"%s_average": FloatField(default=0, editable=False)}
+ def __init__(self, *args, **kwargs):
+ kwargs.setdefault("to", "generic.Rating")
+ super(RatingField, self).__init__(*args, **kwargs)
+
def related_items_changed(self, instance, related_manager):
"""
Calculates and saves the average rating.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment