为啥 Python 不使用对象 .save() 将我的模型保存到数据库?
Posted
技术标签:
【中文标题】为啥 Python 不使用对象 .save() 将我的模型保存到数据库?【英文标题】:Why Python doesn´t save my model to database using object .save()?为什么 Python 不使用对象 .save() 将我的模型保存到数据库? 【发布时间】:2019-09-23 08:44:14 【问题描述】:我在 views.py 中有一个函数,它接受获取一些文本和书籍 pk 并将文本保存到片段表并使用新片段更新书籍文本的请愿书。
片段被正确保存,但书没有。我得到了响应,但是当我手动检查它时它没有保存到数据库中。
这是我的代码:
profilelogged = validtoken(request.META['HTTP_MYAUTH'])
if not profilelogged:
return HttpResponse('Unauthorized', status=401)
else:
index = request.GET.get('id', 0)
petitiontext = request.GET.get('texto', '')
petitiontext = petitiontext.strip()
todaynoformat = datetime.now()
bookselected = Books.objects.filter(pk=index).first()
actualwait = Waits.objects.filter(book=bookselected).order_by('ordernum').first()
if not actualwait:
response = 'MAL: No hay nadie en espera'
else:
profilewaiting = actualwait.profile
if profilewaiting.pk == profilelogged.pk and actualwait.writting == 1:
newfragment = Fragments(profile=profilelogged, book=bookselected, date=todaynoformat.isoformat(), texto=petitiontext)
newfragment.save()
newtextfull = bookselected.text+" "+petitiontext
bookselected.text = newtextfull
bookselected.save()
actualwait.writting = 2
actualwait.save()
response = bookselected.text
else:
response = 'MAL: No eres el siguiente en la lista o no estas activado para escribir'
return HttpResponse(response)
忘记等待的事情,它是我用来检查用户是否能够提交片段的一些等待列表,并且效果很好。
关于为什么书不保存到数据库的任何想法?我在其他函数中使用了这个 object.save() 方法及其工作,但这里没有。
谢谢。
【问题讨论】:
可能是因为if profilewaiting.pk == profilelogged.pk and actualwait.writting == 1:
不满意。
满足,因为newfragment被保存到DB了
使用print()
查看变量中的值以及执行的代码部分。它被称为“打印调试”。或者学习如何使用真正的调试器。
在响应返回中我得到了书的新文本值,但是当我通过 phpmyadmin 检查数据库时,书没有变化,但片段被保存了。
newtextfull
中有什么?也许它不会改变。它将petitiontext
中的文本添加到newtextfull
- 您是否检查了petitiontext
中的内容?也许petitiontext
总是空的。
【参考方案1】:
好吧,我的错。
我试图在两个不同的函数上更新同一个对象。所以我必须弄清楚如何在一个独特的功能上更新它,这就是解决方案。
还是谢谢。
【讨论】:
以上是关于为啥 Python 不使用对象 .save() 将我的模型保存到数据库?的主要内容,如果未能解决你的问题,请参考以下文章
为啥在 Django 管理员的 save() 覆盖中将站点添加到对象似乎不起作用?
python 的PIL中的image 同一数据为啥show()和save()显示和保存的图片不一样?