如何在Django进行破坏性操作后刷新foreignkey_set?
问题描述:
我意识到,如果我通过filter().delete()
删除项目(这是好的)在模型中的object_set不更新,但是我想删除之后更新_set
使这一经过:如何在Django进行破坏性操作后刷新foreignkey_set?
def test_prefetch(self):
game = Game.objects.prefetch_related('bubble_set').get()
game.fill_board()
self.assertEqual(game.bubble_set.count(), game.width * game.height)
game.bubble_set.filter(x=5).delete()
# Fails
self.assertNotEqual(game.bubble_set.count(), game.width * game.height)
game = Game.objects.prefetch_related('bubble_set').get()
答
您需要重新提取对象。所以在.delete()
之后可以做game = Game.objects.prefetch_related('bubble_set').get()
。