Django——更新结果查询集中的特定值

Django——更新结果查询集中的特定值,django,django-models,django-queryset,Django,Django Models,Django Queryset,这些方面有什么问题: for i in message_list: message_stream = Messages.objects.filter(OrderID = i.OrderID).order_by('-MessageLocalID') if message_stream[0].MessageTypeName != 'MessageAck': message_stream[0].status = message_stream[0].MessageType

这些方面有什么问题:

for i in message_list:
    message_stream = Messages.objects.filter(OrderID = i.OrderID).order_by('-MessageLocalID')
    if message_stream[0].MessageTypeName != 'MessageAck':
        message_stream[0].status = message_stream[0].MessageTypeName
        message_stream[0].save()

status
字段不会保存在数据库中。我在这里误解了什么?

问题出在数据库本身,应该用新值更新的状态字段无法接收超过2个字符的值。我使用Django DB迁移并扩展了状态字段,解决了这个问题

这个命令就像一个符咒,没有任何问题:

NpMessages.objects.filter(NPOrderID = i.NPOrderID, MessageTypeName = 'Request').update(status = message_stream[1].MessageTypeName)

并且去掉save语句,因为它不起作用

你能发布一个stacktrace吗?它不会显示错误。当我使用update方法而不是save时,只会显示错误,例如:
message\u stream[0]。update(status=message\u stream[0]。MessageTypeName)
。请让我知道我是否可以进一步澄清:)您必须使用
get
而不是
filter
。Django docs:'请注意,使用get()和使用filter()以及片[0]之间有区别。如果没有与查询匹配的结果,get()将引发DoesNotExist异常。同意,但如果我想获取多个值(这需要使用筛选器)来进行一些修改并将其保存到DB,那该怎么办?您应该安装一个PEP-8检查器。阅读你的代码是非常困难的。谢谢你的建议,我会考虑: