如何在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()