我用django和python3创建了一个包含几个教程的应用程序,这些教程又包含了保存在另一个表中的多个内容条目。每个教程都由练习教程模型中的一个条目表示。我希望能够对django管理面板中的教程和内容进行排序。对于SortableInlineAdminMixin类的内联教程内容,它工作正常。如果我从头开始创建新教程而又没有保存任何对象,那也可以很好地工作(如果我克隆此项目并从头开始设置它,则可以在我的电脑上本地工作)
我现在的问题是,我的应用程序设置就像您在带有apache的ubuntu服务器上的代码和下面的图片中看到的那样,但是我无法对教程进行排序(内联内容仍然可以正常工作)。如果我将它们拖放到新位置并重新加载,它们将不会保存在新位置,而是会退回到原来的位置。
教程和教程内容模型:
from django.db import models
from ckeditor_uploader.fields import RichTextUploadingField
# Page for tutorials
class Tutorial(models.Model):
title = models.CharField(max_length=60)
order = models.PositiveIntegerField(default=0, null=False, unique=True)
# Timestamp
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
class Meta:
ordering = ['order']
def __str__(self):
return self.title
# Content for tutorials
class TutorialContent(models.Model):
lesson_page = models.ForeignKey(Tutorial, related_name='tutorial_content', on_delete=models.CASCADE)
content = RichTextUploadingField()
order = models.PositiveIntegerField(default=0, null=False)
# Timestamp
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
class Meta:
ordering = ['order']
def __str__(self):
description = 'Order - ' + str(self.order)
return description
教程和TutorialContent管理员:
from django.contrib import admin
from .models import Tutorial, TutorialContent
from adminsortable2.admin import SortableInlineAdminMixin, SortableAdminMixin
class TutorialContentInline(SortableInlineAdminMixin, admin.TabularInline):
model = TutorialContent
class TutorialAdmin(SortableAdminMixin, admin.ModelAdmin):
model = Tutorial
inlines = [TutorialContentInline]
list_display = ['title']
admin.site.register(Tutorial, TutorialAdmin)
Django管理教程模型面板:
相应表的SQLite3视图:
答案 0 :(得分:0)
也许有点迟,但是:
如果在模型中添加adminsortable2字段时,数据库中已经存在一些模型实例,则排序将不起作用,您需要使用以下命令首次构建订单:
python manage.py reorder your_app.YourModel
来源:https://django-admin-sortable2.readthedocs.io/en/latest/usage.html#initial-data
希望这会有所帮助。