Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/381.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用拖放对模型中的条目重新排序_Javascript_Python_Django - Fatal编程技术网

Javascript 使用拖放对模型中的条目重新排序

Javascript 使用拖放对模型中的条目重新排序,javascript,python,django,Javascript,Python,Django,假设我在Django中有一个博客应用程序。如何在默认的管理模式下使用可拖动的表重新排序帖子 如果我不必向模型中添加任何额外字段,这将是最好的,但如果我真的必须添加,我可以。在模型类中,您可能必须添加“订单”字段,以维护特定的订单(例如订单=10的项目是最后一个,订单=1的项目是第一个)。然后,您可以在管理更改列表模板(请参阅)中添加JS代码以维护拖放功能。最后,将模型元中的排序更改为类似于['order']的内容。注意“如果我不必向模型中添加任何额外字段,那将是最好的,但如果我真的必须添加,我可

假设我在Django中有一个博客应用程序。如何在默认的管理模式下使用可拖动的表重新排序帖子


如果我不必向模型中添加任何额外字段,这将是最好的,但如果我真的必须添加,我可以。

在模型类中,您可能必须添加“订单”字段,以维护特定的订单(例如订单=10的项目是最后一个,订单=1的项目是第一个)。然后,您可以在管理更改列表模板(请参阅)中添加JS代码以维护拖放功能。最后,将模型元中的排序更改为类似于['order']的内容。

注意“如果我不必向模型中添加任何额外字段,那将是最好的,但如果我真的必须添加,我可以。”

很抱歉,数据库中信息的顺序是由信息本身决定的:您必须始终添加一列进行排序。真的没有选择

此外,要按此顺序检索内容,您需要专门将
.order\u by(x)
添加到查询中,或将
ordering
添加到模型中

class InOrder( models.Model ):
    position = models.IntegerField()
    data = models.TextField()
    class Meta:
        ordering = [ 'position' ]

如果没有附加字段,则无法进行排序。这是关系数据库的规则之一。

要使用代码来实现这一点,请访问。

现在有一个很好的用于订购管理对象的软件包

此外,它还内置了对此的支持,您可以尝试此代码段(最初基于此代码段)

集成非常简单

您的模型(在models.py中):

您的管理员(admin.py):


如果负责保存名称和排序的属性在模型中的名称不同,则相应地更改JS(代码段)。只有在模型中添加字段,才能确定顺序。让我们在模型中添加位置字段

class InOrder( models.Model ):
    position = models.IntegerField()
    data = models.TextField()
    class Meta:
        ordering = [ 'position' ]
In your models.py 

class MainModel(models.Model):

    name = models.CharField(max_length=255)
    position = models.PositiveSmallIntegerField(null=True)

    class Meta:
        ordering = ('position',)

In your apps admin.py

class IdeaCardTagInline(nested_admin.NestedStackedInline):
    model = MainModel
    extra = 0
    min_num = 1
    sortable_field_name = "position"
Meta中的
ordering=('position',)
将根据position字段中的值对main模型进行排序。
sortable\u field\u name=“position”
将有助于在用户拖放多个模型时自动填充位置值

要在api中查看相同的顺序,请在views_model.py中使用order_by(x)。 仅举一个示例:

Model.objects.filter().order_by('position').

对于2011年的django 1.2/1.3,现在最好的解决方案是什么?谢谢,与我想添加的作者相反!不幸的是,django suit的实现不是拖放式的。
Model.objects.filter().order_by('position').