我正在使用jQuery UI Sortable来允许用户对他们通过拖放和上传的图像进行排序。下降。以下是它的工作原理:
当他们上传一些图片时,他们将被定向到另一个页面,其中所有新上传的图像都显示在左侧的一列中。用户可以按照他们希望的顺序将照片从左列拖放到右列。我正在使用jQuery Serialize来获取已排序的数组。
我的问题是,如何更新我的数据库以重新排列图像并保存与Serialize返回的图像相同的顺序?
由于
答案 0 :(得分:3)
请勿更改数据库中的顺序,而是让数据库对结果进行排序。您需要做的就是为数据库提供一些排序方式。
在模型中添加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')
然后使用每个.image
实例的ImageOrder
字段。