为啥 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()显示和保存的图片不一样?

为啥 GORM 不保存我的对象?

为啥 save() 第一次不写入文件?

为啥 MR_save 不起作用但 MR_saveNestedContexts 起作用?

为啥用户在不调用 save() 的情况下使用 Spring Security 和 Grails 进行更新?