django无法保存数据库中的所有事件

问题描述 投票:0回答:2

我有一个工作代码,可以获取所有事件详细信息。但是我无法在数据库中保存完整数据,只保存最后一条记录

def incidents(request):
incidentsServicenow = IncidentsServicenow()
c = pysnow.Client(instance='', user='', password='')

# Define a resource, here we'll use the incident table API
incident = c.resource(api_path='/table/incident')
print('incident', incident)
# Query for incidents with state 1
response = incident.get()
print('response', response)
# Iterate over the result and print out `sys_id` of the matching records.
ticket = []
for record in response.all():
    data = {
        'number': record['number'],
        'description': record['description'],
        'short_description': record['short_description'],
        'state': record['state'],
    }
    #print(record['number'])
    incidentsServicenow.number = data['number']
    incidentsServicenow.title = data['short_description']
    incidentsServicenow.description = data['description']
    incidentsServicenow.state = data['state']
    #ticket.append(data)
    print("storing data")
    incidentsServicenow.save()
return HttpResponse(ticket, content_type='application/json')

我的模特是

class IncidentsServicenow(models.Model):
number = models.CharField(max_length=32)
title = models.CharField(max_length=160)
description = models.TextField()
state = models.CharField(max_length=20)

class Meta:
    managed = False
    db_table = 'incidents_servicenow'

我需要保存数据库中的所有记录

django django-database django-datatable django-database-functions
2个回答
1
投票

您应该在循环中创建对象。从代码中,我可以看到你创建的incidentsServicenow对象是在循环外创建的。

  for record in response.all():
    data = {
        'number': record['number'],
        'description': record['description'],
        'short_description': record['short_description'],
        'state': record['state'],
    }
    #print(record['number'])
    incidentsServicenow = IncidentsServicenow()
    incidentsServicenow.number = data['number']
    incidentsServicenow.title = data['short_description']
    incidentsServicenow.description = data['description']
    incidentsServicenow.state = data['state']
    ticket.append(data)
    print("storing data")
    incidentsServicenow.save()
return HttpResponse(ticket, content_type='application/json')

或者你可以这样做

   for record in response.all():
    data = {
        'number': record['number'],
        'description': record['description'],
        'short_description': record['short_description'],
        'state': record['state'],
    }
    #print(record['number'])
    incidentsServicenow = IncidentsServicenow(number=data['number'],
title=data['short_description'],description=data['description'],state=data['state'])
    ticket.append(data)
    print("storing data")
    incidentsServicenow.save()
return HttpResponse(ticket, content_type='application/json')

1
投票

在内部添加以下行以进行循环

incidentsServicenow = IncidentsServicenow()
© www.soinside.com 2019 - 2024. All rights reserved.