我制作了一个从url请求json的方法,从我的ImagemServer()
Django模型中填充我的objectidServer
字段,然后从中获取一些值。主要目的是在每次json更新时填充新字段。例如:如果有人出于任何原因从该字段中删除一个值,该方法将根据ObjectdServer值再次请求并填充该字段(如果存在相同的值,则不执行任何操作,如果不存在,则创建)。同样,每次json更新都会获取新值并填充新字段
models.py
class ImagemServer(models.Model):
objectidServer = models.CharField(max_length=255, null=True, blank=True)
name = models.CharField(max_length=255, null=True, blank=True)
tx_sensor = models.CharField(max_length=255, null=True, blank=True)
nr_ano = models.CharField(max_length=255, null=True, blank=True)
views.py
def GIS(request):
response = requests.get('url')
geodata = response.json()
id_obj = [(data['attributes']['OBJECTID']) for data in geodata['features']]
try:
for lista in id_obj:
ImagemServer.objects.get(objectidServer=lista)
return HttpResponse('OK')
except ImagemServer.DoesNotExist:
for lista2 in id_obj:
imagemServer_list = ImagemServer()
obj = ImagemServer(objectidServer=lista2)
#print(lista2)
#print(imagemServer_list.objectidServer)
if imagemServer_list.objectidServer != lista2:
for lista3 in id_obj:
print(lista3)
obj = None
obj = ImagemServer()
obj.objectidServer = lista3
obj.save()
return HttpResponse("UPDATED")
else:
return HttpResponse("OK")
json example
"features": [
{
"attributes": {
"OBJECTID": 1,
"Name": "1324_150612",
"MinPS": 0,
"MaxPS": 2.245788210298803e-005,
"LowPS": 2.2457882102988031e-006,
"HighPS": 2.2457882102988031e-006,
"Category": 1,
"Tag": "Dataset",
"GroupName": "",
"ProductName": "",
"CenterX": -56.584631153437641,
"CenterY": -17.062917718639063,
"ZOrder": null,
"NR_ANO": 2014,
"TX_SENSOR": "TEST",
}
}]
脚本运行良好,我可以填充所有字段,但当我删除任何字段时,我遇到了一个问题:当我再次请求json时,该方法不会检查值是否存在,并再次填充所有内容,复制条目。当nothings被删除时,即使json也不会更新。真的不知道我错过了什么
Relations
objectidServer (Model) -> OBJECTID (json)
name (Model) -> Name (json)
tx_sensor (Model) -> TX_SENSOR (json)
nr_ano (Model) -> NR_ANO (json)
我认为您的脚本有点复杂,您的try/except和多个循环并不总是像您预期的那样运行。例如,一旦在try部件中找不到第一个对象,您就开始在except部件中进行新的循环
我建议采取另一种方法:
步骤1:删除所有不再存在的对象
步骤2:添加缺少的对象
这可能是这样的:
相关问题 更多 >
编程相关推荐