首页 > 解决方案 > unique=True give 已经存在!即使交换 2 个对象的值

问题描述

为了以特定顺序显示对象(成员),我制作了字段order

order = models.IntegerField(unique=True,null=True,blank=True)

这样我就可以.order_by('order')得到所需的订单。

在 Django Admin 中,表只有order0,1 的 2 个对象。如果我想用 1,0 交换它,我会得到一个错误

关于我们这个订单已经存在

在此处输入图像描述

为了便于使用 Django admin,有没有更好的方法来实现上述

标签: djangodjango-modelsdjango-admin

解决方案


您可以删除unique=True和添加自定义操作以重新排序对象。在这种形式中,Django 管理员将每个对象应用到单独的事务中,并导致此错误。您可以覆盖管理类的更新功能,并像这样在批量更新事务中进行所有更改。但我不推荐它。因为您将来可能会出错并想要编辑其他字段,而这一行会产生错误。


推荐阅读