jquery - 如何重新排列 Django 数据库中保存对象的顺序

标签 jquery python django database sqlite

我正在使用 jQuery UI Sortable 来允许用户对通过拖放上传的图像进行排序。其工作原理如下:

当他们上传一些图片时,他们会被引导到另一个页面,所有新上传的图像都显示在左侧的一栏中。用户可以按照自己希望的顺序将照片从左栏拖放到右栏。我正在使用 jQuery Serialize 来获取排序后的数组。

我的问题是,如何更新数据库以重新排列图像并将顺序保存为与 Serialize 返回的顺序相同?

谢谢

最佳答案

不要改变数据库中的顺序,而是让数据库对结果进行排序。您所需要做的就是为数据库提供一些排序依据。

向您的模型添加一个 order 整数字段,并在用户为您的图像创建订单时更新这些值;这是一个简单的编号操作。然后,当您查询要显示的图像时,请在该字段上对它们进行排序。

如果图像在用户之间共享,您需要将其设为单独的模型;将用户映射到带有附加顺序的图像:

class ImageOrder(Model):
    """Keeps track ordering of images for a given user"""
    order = IntField()
    user = ForeignKey(User)
    image = ForeignKey(Image)

现在,您可以根据图像与给定用户的关系过滤图像,并按 order 字段对它们进行排序:

ImageOrder.objects.filter(user=user).order_by('order').select_related('image')

然后使用每个 ImageOrder 实例的 .image 字段。

关于jquery - 如何重新排列 Django 数据库中保存对象的顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36703798/

相关文章:

jquery - 如何检查两个元素/div 是否属于同一个父元素?

django - 在我的 django 项目中使用 mypy 时出现问题

regex - 如何让 Django urls.py 识别 url 中的#(哈希)?

jquery - 动态更改 jquery 中的图像以匹配 css 图像

javascript - 选择前一个隐藏元素

jQuery 调整 Div 响应大小

python视频捕获循环

python - Python中的openCV光流

python - 在 Sqlalchemy 中更新多列

python - Python 的基于位置的推荐框架