用户定义的具有唯一约束的模型实例的排序

时间:2016-05-23 15:01:39

标签: django django-models

我有一个模型,我希望用户能够控制其顺序。 这是我正在使用的简化模型。

class Parameter(models.Model):
    order = models.IntegerField(unique=True)

问题

用户将通过GUI更新订单字段,但我无法更新任何参数实例,因为它们通过订单字段相互冲突。

实施例

  • parameterA.order = 1 and parameterB.order = 2.
  • 用户在parameterA前面移动 parameterB
  • 该应用尝试提交更改,但参数B无法获得值1,因为它被参数A占据,反之亦然。

我考虑过删除唯一约束,事实上,如果另一个合适的解决方案不存在,我将其作为后备。但我宁愿保留约束。

修改

解决方案应该能够处理大量参数。

1 个答案:

答案 0 :(得分:0)

在这种情况下,最直接的方法是......

参数A = 1 参数B = 2

parameterA.order = -1
parameterA.save()
parameterB.order = 1
parameterB.save()
parameterA.order = 2
parameterA.save()