我正在尝试将一些数据(从API获取)保存到数据库中。一个列表(名为GetQuestion_response
)是从该API获得的,有点像这样(API的实际数据要大得多,所以我在这里显示列表的前两个元素):
GetQuestion_response = [
{
"Id":1,
"GroupId":0,
"QuestionTitle":"What is your first name?",
"GroupName":null,
"QuestionType":"TEXT","IsMappingAvailable":null,"BodyRegion":0,"EnableCalculation":false,
"Responses":[]
},
{
"Id":2,
"GroupId":0,
"QuestionTitle":"And your last name?",
"GroupName":null,
"QuestionType":"TEXT","IsMappingAvailable":null,"BodyRegion":0,"EnableCalculation":false,
"Responses":[
{'Id': 100, 'ResponseText1': 'aaaa', 'ResponseText2': 'bb', 'IsDeleted': False}
{'Id': 101, 'ResponseText1': 'zzzz', 'IsDeleted': True}
]
}
]
我的models.py
class Responses(models.Model):
Answer_Id = models.IntegerField(primary_key=True)
QuestionId = models.IntegerField(default=0)
ResponseText1 = models.CharField(max_length=500, null=True, blank=True)
ResponseText2 = models.CharField(max_length=500, null=True, blank=True)
ResponseText3 = models.CharField(max_length=500, null=True, blank=True)
IsDeleted = models.BooleanField(default=False)
class GetQuestion_API(models.Model):
Question_Id = models.IntegerField(primary_key=True)
GroupId = models.IntegerField(default=0)
QuestionTitle = models.TextField()
GroupName = models.CharField(max_length=500, null=True, blank=True)
QuestionChoice = [
('TEXT', 'TEXT'),
('BUTTON', 'BUTTON'),
('NUMBER', 'NUMBER')
]
QuestionType = models.CharField(max_length=50, choices=QuestionChoice, default='TEXT', null=True, blank=True)
IsMappingAvailable = models.CharField(max_length=500, null=True, blank=True)
BodyRegion = models.CharField(max_length=200, null=True, blank=True)
EnableCalculation = models.BooleanField(default=False)
Responses = models.ForeignKey(Responses, on_delete=models.CASCADE, related_name="QuestionReletedResponses", null=True, blank=True)
在我的views.py
中:
for i in GetQuestion_response:
this_Id = i['Id']
this_GroupId = i['GroupId']
this_QuestionTitle = i['QuestionTitle']
this_GroupName = i['GroupName']
this_QuestionType = i['QuestionType']
this_IsMappingAvailable = i['IsMappingAvailable']
this_BodyRegion = i['BodyRegion']
this_EnableCalculation = i['EnableCalculation']
GetQuestion_API_obj = GetQuestion_API.objects.create(
Question_Id = this_Id,
GroupId = this_GroupId,
QuestionTitle = this_QuestionTitle,
GroupName = this_GroupName,
QuestionType = this_QuestionType,
IsMappingAvailable = this_IsMappingAvailable,
BodyRegion = this_BodyRegion,
EnableCalculation = this_EnableCalculation,
)
#Creating Response Object Under question
for j in i['Responses']:
if j['Id'] is not None:
Responses_Id = j['Id']
if j['ResponseText1'] is not None:
Responses_ResponseText1 = j['ResponseText1']
else:
Responses_ResponseText1 = None
if j['ResponseText2'] is not None:
Responses_ResponseText2 = j['ResponseText2']
else:
Responses_ResponseText2 = None
if j['ResponseText3'] is not None:
Responses_ResponseText3 = j['ResponseText3']
else:
Responses_ResponseText3 = None
if j['IsDeleted'] is not None:
Responses_IsDeleted = j['IsDeleted']
Responses_obj, created = Responses.objects.create(
Answer_Id = Responses_Id,
QuestionId = this_Id,
ResponseText1 = Responses_ResponseText1,
ResponseText2 = Responses_ResponseText2,
ResponseText3 = Responses_ResponseText3,
IsDeleted = Responses_IsDeleted,
)
if created:
Responses_obj.save()
GetQuestion_API_obj.Responses_set.add(Responses_obj)
if created:
GetQuestion_API_obj.save()
但不幸的是,views.py
中的这段代码指出了如下错误:
TypeError: cannot unpack non-iterable Responses object
当我尝试运行范围为5的主循环时(取列表的前五个元素),它工作得非常好。但是当我在包含所有元素的整个GetQuestion_response
列表上运行循环时,它会出现这个错误请告诉我如何解决这个问题?
目前没有回答
相关问题 更多 >
编程相关推荐