以自定义方式更新数据列表



我有一个场景,想知道最好的处理方法。

我有一个有n个地址的用户。

addressList (id)为例(我得到在前端)-

addresses=[1,2,3,4]

一旦我将所有地址获取到前端,用户可以删除一个或n个地址。

注意-删除只是从列表中删除地址对象(在前端),而不是从数据库中永久删除它。

所以这里addressList现在可以是-

addresses=[1,4]

同时,用户添加n个新地址

新的addressList可以是-

addresses=[1,4, {newAddressDetail}, {newAddressDetail}]

现在更新的数据(地址)被发送到后端用于更新过程。

想知道如何在后端处理这种情况最好吗?

事情是-

  • 删除所有以前保存的当前未收到的地址。
  • 不更改当前收到的先前保存的地址。
  • 创建数据库中没有的新地址。

当用户从前端删除地址时,不建议从数据库中删除地址。地址在前端是不可编辑的,我在这里展示的数据仅用于解释目的,在技术上是不正确的。

如果需要,可以提供更多的细节。

我认为你最好的选择是在python中使用sets

所以在你的后端输入:

new = set(addresses_from_frontend)
old = set(user.addresses.all())
Address.objects.bulk_create([Address(**item) for item in old - new])
Address.objects.filter(id__in=[a.id for a in new - old]).delete()

它不会完全像这样,你可能需要在删除地址之前使用地址id来获取地址等等。但主要的一点是,集合是一种有效的方法,bulk_create()和delete()使用过滤器也可以帮助你得到你的db查询。

最新更新