【发布时间】:2020-01-27 19:32:20
【问题描述】:
我在尝试更新数据库中的单个(记录)对象时遇到了很多麻烦。
context['eval_list'] = Evaluering.objects.update(eval_relationer_id=self.kwargs.get('pk'))
我使用objects.update,但它会更新我所有的对象fk。如何实现只更新一个对象?我也试过这个:
context['eval_list'] = Evaluering.objects.update_or_create(eval_relationer_id=self.kwargs.get('pk'))
但这会创建一个新对象并且不会更新我要更新的记录。我知道它为什么会创建一个新对象,这是因为我要更新的 FK 为空。当然,必须有一种只更新而不创建单个记录的方法吗?我在这里想念什么?
我尝试添加过滤器,但感觉多余?我试过这个:
context['eval_list'] = Evaluering.objects.filter(eval_relationer_id=self.kwargs.get('pk')).update(eval_relationer_id=self.kwargs.get('pk'))
我确实考虑过尝试立即而不是稍后创建 FK 的 ID,但我无法真正让它工作,但如果我创建了一个 ID,那么 update_or_create 将工作,因为一个 ID 已经存在,但是我不敢相信不创建就无法更新单个对象?
如果之前创建 ID 是唯一的解决方法,我将不得不弄清楚如何。
【问题讨论】:
-
过滤不会做任何事情,因为您使用已经具有该值的值更新项目。通常过滤条件与更新不同。
标签: sql django django-models django-rest-framework django-views