django-admin-sortable不保存现有对象的顺序

时间:2018-10-29 14:01:19

标签: python django django-admin

我使用django-admin-sortable 2.1.2和django 1.11。

问题是,当我尝试从管理面板更改订单时,该订单未保存。我认为这可能是由于已经存在的模型实例造成的。

这是我当前代码的一部分:

// models.py
class Category(SortableMixin):
    name = models.CharField(
        _('name'), 
        max_length=150,
    )
    order = models.PositiveIntegerField(
        default=0,
        db_index=True,
    )

    class Meta:
        verbose_name = _('category')
        verbose_name_plural = _('categories')
        ordering = ['order']


// admin.py
class CategoryAdmin(SortableModelAdmin):
    class Meta:
        model = Category
        fields = (
            'name',
        )
        sortable = 'order'

由于对象已存在,因此默认值设置为0。我试图在Shell控制台中手动更改其顺序,但无济于事。 我想避免删除我的对象并再次创建它们。

您是否有解决办法?

1 个答案:

答案 0 :(得分:1)

我决定使用另一个类从admin.py文件中继承。

代替:

from suit.admin import SortableModelAdmin
class CategoryAdmin(SortableModelAdmin):
    class Meta:
        model = Category
        fields = (
            'name',
        )
        sortable = 'order'

我使用:

from adminsortable.admin import SortableAdmin
class CategoryAdmin(SortableAdmin):
    class Meta:
        model = Category
        fields = (
            'name',
        )
        sortable = 'order'

它的工作原理有些不同,但效果令我满意,并解决了我的问题。