Refactored sortable_by into a property instead of a classmethod.
Added backwards compatibility for pre 1.1.1 versions that still have sortable_by defined as a classmethod. Need to address dynamic regroup template tag to see why categories are not being grouped properly in sample app.
This commit is contained in:
+10
-5
@@ -53,13 +53,18 @@ class SortableAdmin(ModelAdmin):
|
||||
has_perm = request.user.has_perm(opts.app_label + '.' + opts.get_change_permission())
|
||||
objects = self.model.objects.all()
|
||||
|
||||
"""
|
||||
Determine if we need to regroup objects relative to a foreign key specified on the
|
||||
model class that is extending Sortable.
|
||||
"""
|
||||
#Determine if we need to regroup objects relative to a foreign key specified on the
|
||||
# model class that is extending Sortable.
|
||||
sortable_by = getattr(self.model, 'sortable_by', None)
|
||||
if sortable_by:
|
||||
sortable_by_class, sortable_by_expression = sortable_by()
|
||||
#backwards compatibility for < 1.1.1, where sortable_by was a classmethod instead of a property
|
||||
try:
|
||||
sortable_by_class, sortable_by_expression = sortable_by()
|
||||
except ValueError:
|
||||
sortable_by_class = self.model.sortable_by
|
||||
sortable_by_expression = sortable_by_class.__name__.lower()
|
||||
|
||||
print sortable_by_expression
|
||||
sortable_by_class_display_name = sortable_by_class._meta.verbose_name_plural
|
||||
sortable_by_class_is_sortable = sortable_by_class.is_sortable()
|
||||
else:
|
||||
|
||||
@@ -14,8 +14,12 @@ class Sortable(models.Model):
|
||||
`model_type_id` returns the ContentType.id for the Model that inherits Sortable
|
||||
|
||||
`save` the override of save increments the last/highest value of order by 1
|
||||
|
||||
Override `sortable_by` method to make your model be sortable by a foreign key field.
|
||||
Set `sortable_by` to the class specified in the foreign key relationship.
|
||||
"""
|
||||
order = models.PositiveIntegerField(editable=False, default=1, db_index=True)
|
||||
sortable_by = None
|
||||
|
||||
class Meta:
|
||||
abstract = True
|
||||
|
||||
@@ -55,7 +55,7 @@
|
||||
{% if objects %}
|
||||
<div id="sortable">
|
||||
{% if group_expression %}
|
||||
{% render_nested_sortable_objects objects group_expression %}
|
||||
{% render_nested_sortable_objects objects group_expression %}
|
||||
{% else %}
|
||||
{% render_sortable_objects objects %}
|
||||
{% endif %}
|
||||
|
||||
@@ -69,7 +69,7 @@ def dynamic_regroup(parser, token):
|
||||
"""
|
||||
expression = lastbits_reversed[2][::-1]
|
||||
var_name = lastbits_reversed[0][::-1]
|
||||
|
||||
print expression
|
||||
"""
|
||||
We also need to hand the parser to the node in order to convert the value
|
||||
for `expression` to a FilterExpression.
|
||||
|
||||
Reference in New Issue
Block a user