我有一个使用Django REST Framework的Django应用程序。当我执行更改模型字段的Ajax调用时:
# Delete media
def delete(self, request, pk, format=None):
media = get_object_or_404(Media, pk=pk)
media.deleted = True
media.save()
return Response(status=status.HTTP_200_OK)
,然后触发JavaScript location.reload();
,重新加载的页面仍包含“已删除”模型。在数据库上,deleted
字段为True,在我的模板上,为:
{% for media in issue.getMedia %}
{% if not media.deleted %}
{% include 'core2/include/media.html' %}
{% endif %}
{% endfor %}
当我重新加载Django网络服务器时,它不再显示media.deleted
对象。
Ajax请求是:
controller: function ($scope) {
$scope.execute = function(url){
console.log($scope.action)
$.ajax({
url: $scope.action,
type: 'DELETE',
success: function(result){
location.reload();
},
error: function(e){
alert("Error deleting")
console.log(e)
}
});
}
}
当我使用常规的Django表单修改对象时(例如,创建对象时),页面会重新正确加载。
问题模型上issue.getMedia
的实现:
def getMedia(self):
return Media.objects.filter(issue=self).order_by('creationDate')
答案 0 :(得分:4)
尝试将“ never_cache”装饰器添加到负责页面渲染的视图中:
User.profile&.settings&.card&.options
或如果是CBV,则使用调度方法:
from django.views.decorators.cache import never_cache
@never_cache
def myview(request, ...):
...
答案 1 :(得分:0)
您可以尝试使用location.reload(true)
吗?也许它需要从现金中提取页面。