Python Django shell命令更改json数据中的值

Python Django shell命令更改json数据中的值,python,django,Python,Django,我是django的新手,我在django的manage.py shell中玩。以下是我在壳中尝试的东西: >>> data [{'primary_program': False, 'id': 3684}, {'primary_program': True, 'id': 3685}] >>> data[0] {'primary_program': False, 'id': 3684} >>> data[1] {'primary_program'

我是django的新手,我在django的manage.py shell中玩。以下是我在壳中尝试的东西:

>>> data
[{'primary_program': False, 'id': 3684}, {'primary_program': True, 'id': 3685}]
>>> data[0]
{'primary_program': False, 'id': 3684}
>>> data[1]
{'primary_program': True, 'id': 3685}
>>> data[0].values()
[False, 3684]
>>> data[1].values()
[True, 3685]
>>> 
我应该如何在这里发出命令,将
data[1]
primary\u program
的值更新为False,并保持json的其余部分不变

编辑:

这就是我获取数据的方式。我有一个rest框架api,我正在使用序列化程序读取数据

>>> from acadprog.models import *
>>> from acadprog.serializers import *
>>> from django.http import Http404
>>> from rest_framework import status
>>> from rest_framework.views import APIView
>>> from rest_framework.decorators import api_view
>>> from rest_framework.response import Response
>>> qs = Student_academic_program.objects.filter(student=2773951)
>>> qs.values()
[{'academic_program_id': 595, 'academic_program_gpa': None, 'student_id': 2773951, 'credits_completed': 28, 'primary_program': False, u'id': 3684}, {'academic_program_id': 596, 'academic_program_gpa': None, 'student_id': 2773951, 'credits_completed': 26, 'primary_program': True, u'id': 3685}]
>>> len(qs.values())
2
>>> data = qs.values('id','primary_program')
>>> data
[{'primary_program': False, 'id': 3684}, {'primary_program': True, 'id': 3685}]
>>> data
[{'primary_program': False, 'id': 3684}, {'primary_program': True, 'id': 3685}]
>>> data[1]['primary_program'] = False
>>> data
[{'primary_program': False, 'id': 3684}, {'primary_program': True, 'id': 3685}]
>>> data['primary_program'][1] = False
Traceback (most recent call last):
  File "<console>", line 1, in <module>
  File "/home/abhishek/projects/texascompletes/local/lib/python2.7/site-packages/django/db/models/query.py", line 108, in __getitem__
    raise TypeError
TypeError
>>> data[1]['primary_program'] = False
>>> data
[{'primary_program': False, 'id': 3684}, {'primary_program': True, 'id': 3685}]
>>从acadprog.models导入*
>>>从acadprog.serializers导入*
>>>从django.http导入Http404
>>>从rest\u框架导入状态
>>>从rest_framework.views导入APIView
>>>从rest\u framework.decorators导入api\u视图
>>>来自rest\u framework.response导入响应
>>>qs=Student\u academic\u program.objects.filter(Student=2773951)
>>>qs.values()
[{'academic_program_id':595,'academic_program_gpa':无,'student_id':2773951,'credits_completed':28,'primary_program':False,u'id':3684},{'academic_program_id':596,'Academical_program_gpa':无,'student_id':2773951,'credits_completed':26,'primary__program':True,u'id':
>>>len(qs.values())
2.
>>>数据=qs.值('id','primary_program')
>>>资料
[{'primary_program':False,'id':3684},{'primary_program':True,'id':3685}]
>>>资料
[{'primary_program':False,'id':3684},{'primary_program':True,'id':3685}]
>>>数据[1]['primary_program']=False
>>>资料
[{'primary_program':False,'id':3684},{'primary_program':True,'id':3685}]
>>>数据['primary_program'][1]=False
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
文件“/home/abhishek/projects/texascompletes/local/lib/python2.7/site packages/django/db/models/query.py”,第108行,在__
提高打字错误
打字错误
>>>数据[1]['primary_program']=False
>>>资料
[{'primary_program':False,'id':3684},{'primary_program':True,'id':3685}]

由于
数据[1]
只是一个字典,请按键设置值:

>>> data = [{'primary_program': False, 'id': 3684}, {'primary_program': True, 'id': 3685}]
>>> data[1]['primary_program'] = False
>>> data
[{'primary_program': False, 'id': 3684}, {'primary_program': False, 'id': 3685}]
UPD:

你在
数据中得到的东西是一个查询集。如果需要更新的词典列表,请在以下操作之前将queryset转换为
list

>>> data = list(qs.values('id','primary_program'))
>>> data[1]['primary_program'] = False
如果要更新数据库中的值:

>>> qs = Student_academic_program.objects.filter(student=2773951)
>>> data = qs[1]
>>> data.primary_program = False
>>> data.save()
此外,如果您想为所有学生的课程设置
primary_program
False
,您可以使用以下选项进行批量更新:

>>> Student_academic_program.objects.filter(student=2773951).update(primary_program=False)

@crozzfire你说它不工作是什么意思?有错误吗?
数据从哪里来?它没有给我任何错误…数据来自rest框架的序列化程序。。我会用我得到的更新问题我更新了我如何得到的问题data@crozzfire明白了。好的,谢谢,您将如何处理修改后的
数据
?是否需要更新数据库中的
主程序
值?是的。我有一个put()函数要更新,所以我将给出一个serializer.save(),如果在我的api_视图中更改的数据不是JSON,它是Python dict。