Django model_mommy模型实例未保存在 Ajax 测试中



我正在尝试测试保存字段的 django ajax 视图。 这是测试:

def test_ajax_save_draft(self):
self.client.force_login(self.test_user) # view requires login
sub = mommy.make(QuestSubmission, quest=self.quest2)
draft_comment = "Test draft comment"
# Send some draft data via the ajax view, which should save it.
ajax_data = {
'comment': draft_comment,
'submission_id': sub.id,
}
self.client.post(
reverse('quests:ajax_save_draft'), 
data=ajax_data,
HTTP_X_REQUESTED_WITH='XMLHttpRequest',
)
self.assertEqual(draft_comment, sub.draft_text) # sub.draft_text = None, as if the ajax view was never called!

这是视图:

@login_required
def ajax_save_draft(request):
if request.is_ajax() and request.POST:
submission_comment = request.POST.get('comment')
submission_id = request.POST.get('submission_id')
sub = get_object_or_404(QuestSubmission, pk=submission_id)
sub.draft_text = submission_comment
sub.save()
response_data = {}
response_data['result'] = 'Draft saved'
return HttpResponse(
json.dumps(response_data),
content_type="application/json"
)
else:
raise Http404

当我运行测试时,我进入了 if 块,它可以检索注释和提交对象,但是当它最后返回到测试时,就像保存从未发生过一样。

我在这里做错了什么?

尝试调用sub.refresh_from_db()

对模型实例所做的更改只会影响正在修改的实例。任何现有模型实例都不会更新,refresh_from_db将从数据库中获取更改

最新更新