Python django对mysql、sqlite和服务器的查询不同
我有一个Python django对mysql、sqlite和服务器的查询不同,python,mysql,django,sqlite,django-queryset,Python,Mysql,Django,Sqlite,Django Queryset,我有一个视图,其中包含一段代码 notif = Notification.objects.get(id=self.npk, body=q, viewed=False) notif.viewed = True notif.save() 这里我只想更新通知对象的viewsed属性 奇怪的是,当我在本地主机中对其进行本地测试时,它给出了我想要的结果,从而将所查看的通知变为真 但在生产中,它不会将查看的通知更改为true。我在开发中使用SQLite,并考
视图
,其中包含一段代码
notif = Notification.objects.get(id=self.npk, body=q, viewed=False)
notif.viewed = True
notif.save()
这里我只想更新通知对象的viewsed属性
奇怪的是,当我在本地主机中对其进行本地测试时,它给出了我想要的结果,从而将所查看的通知变为真
但在生产中,它不会将查看的通知更改为true。我在开发中使用SQLite,并考虑在开发中使用MySQL,因为我在生产中使用MySQL
即使在开发中使用mysql,也没有错误。它将在开发中查看的通知变为真实,在生产中不会更改
这只发生在我身上吗?尝试了所有的可能性,但没有解决办法
使用相同数据库的相同查询在开发中有效,但在生产中无效。为什么?服务器有什么问题吗
class QuestionDetailView(DetailView):
context = {}
model = Question
template_name = "question-detail.html"
def get(self, request, pk, cpk, npk, **kwargs):
self.pk = pk
self.cpk = cpk
self.npk = npk
return super(QuestionDetailView, self).get(request, pk, cpk, npk, **kwargs)
def get_context_data(self, **kwargs):
context = super(QuestionDetailView,self).get_context_data(**kwargs)
context['question'] = Question.objects.get(pk=self.pk, published=True)
q = context['question']
if self.npk:
print "with notification"
#Notification.objects.filter(id=self.npk, body=q, viewed=False).update(viewed=True)
try:
notif = Notification.objects.get(id=self.npk, body=q, viewed=False)
notif.viewed = True
notif.save()
except:
pass
return context
该代码当然会将该对象的viewsed属性的值设置为true,无论您使用的是什么db。你在哪里看到别的东西?显示准确的代码。执行此操作。。。python manage.py shell-->现在导入所需内容并运行命令更新通知对象。把装在贝壳上的木头贴上去。@daniel。。就像我说的,代码中没有任何错误。它在本地非常有效,但在生产中不起作用。我已经编写了相同的代码将通知标记为视图,这在本地和生产环境中都非常有效,只是查看通知在生产环境中不起作用。是因为服务器吗?@DanielRoseman。。我已经更新了这个问题。。如果可以帮助meRemove
except:pass
块,查看它是否引发异常而不是保存异常。