Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/278.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/24.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
Python Django管理员排序表2未保存订单_Python_Django_Sorting_Django Admin - Fatal编程技术网

Python Django管理员排序表2未保存订单

Python Django管理员排序表2未保存订单,python,django,sorting,django-admin,Python,Django,Sorting,Django Admin,我已经在Django项目中安装了Django Admin Sortable 2。我可以在管理员中看到拖放命令系统,但当我在某些对象周围移动时,该命令不会被保存。在移动对象时,我在终端日志中也看不到任何错误 这是我的模型和管理python文件。我需要做些额外的事情来保存订单吗 Model.py class QuickLink(models.Model): title = models.CharField(max_length=20) image = models.FileField

我已经在Django项目中安装了Django Admin Sortable 2。我可以在管理员中看到拖放命令系统,但当我在某些对象周围移动时,该命令不会被保存。在移动对象时,我在终端日志中也看不到任何错误

这是我的模型和管理python文件。我需要做些额外的事情来保存订单吗

Model.py

class QuickLink(models.Model):
    title = models.CharField(max_length=20)
    image = models.FileField(null=True, blank=False,upload_to='media/quick_links')
    link = models.CharField(max_length=200)
    order = models.PositiveIntegerField(default=0, blank=False, null=False)

    def __str__(self):
        return self.title

    class Meta(object):
        ordering = ['order']
管理员

from django.contrib import admin
from adminsortable2.admin import SortableAdminMixin
from .models import QuickLink

@admin.register(QuickLink)
class QuickLinksAdmin(SortableAdminMixin, admin.ModelAdmin):
    pass
我的版本如下:

Django
2.0.4

Python
3.6.1


Django Admin排序表2
0.6.19

尝试运行管理命令:
/manage.py reorder

重新排序对象时遇到问题的原因是,在添加可排序功能时,我已经创建了对象


将此设置为默认值0时,会将它们全部设置为0。通过返回并按照正确的顺序重新创建对象或编辑数据库中的字段,我能够解决这个问题。

还可以创建数据迁移,为已经创建的模型设置初始顺序

def reorder(apps, schema_editor):
    Tag = apps.get_model("main", "Tag")
    order = 0
    for item in Tag.objects.all():
        order += 1
        item.order = order
        item.save()


class Migration(migrations.Migration):

    dependencies = [
        ('main', '0011_auto_20190517_1336'),
    ]

    operations = [
        migrations.RunPython(reorder, RunPython.noop),

对于记录,在我的情况下,它没有记录,因为有几个原因,每个原因都阻止了索引保存:

1/在admin内联中,我在readonly_字段中显示了索引

readonly_fields=[ ...,'myindex',...]
我通过定义一个函数来显示索引,从而解决了这个问题:

readonly_fields=[ ...,'myindex',...]
def index(self,obj): #pour pouvoir afficher l'index 
    return obj.myindex
2/我的模型中有:

class Meta:
    order_with_respect_to = 'series'
在我的管理内联中:

ordering=['myindex']
为了在“管理更改”页面中按父字段排序的对象,使所有相关字段显示在一起 在内联中,记录按索引排序

…但这阻止了在内联中移动记录时保存索引

因此,我将两者都删除,并将其放入模型中:

class Meta:
    ordering=['myindex']
执行这两个更改后,它就可以工作了。 我进行了测试,如果只做了一个更改,它在保存时仍然不会记录更改