UPDATEDjango errore <model> oggetto non ha attributo 'update'
stavo facendo un po 'di manutenzione sul server ed ho ripartito ... una volta che è tornato il codice ha funzionato bene ... che in realtà mi fa a preoccupare lo stesso ...
penso che sia un bug su mod_wsgi.
Grazie comunque!
Sono davvero nuovo di django (iniziato ieri). Sono riuscito a fare un parser excel usando xlrd, tutto funziona bene con i dati (si carica davvero molto velocemente), ho bisogno di aggiornare le informazioni sul file nel database in modo da poter sapere come sta andando il carico, questo è dove ho il problema, il metodo save() non funziona, ho già usato l'aggiornamento insieme a get e filter, ma sempre lo stesso problema.
spero che mi può indicare dove è l'errore
models.py
class archivo(models.Model):
archivo_id = models.AutoField(primary_key=True)
fk_cliente = models.IntegerField()
fk_usuario = models.IntegerField()
archivo_nombre = models.CharField(max_length = 30)
archivo_original = models.CharField(max_length = 255)
archivo_extension = models.CharField(max_length = 5)
archivo_tamano = models.FloatField()
archivo_registros = models.IntegerField()
archivo_registros_buenos = models.IntegerField()
archivo_registros_malos = models.IntegerField()
archivo_registros_cargados = models.IntegerField()
archivo_fecha_carga = models.DateTimeField()
archivo_fecha_envio = models.DateTimeField()
def __unicode__(self):
return self.archivo_id
views.py
from procesa.models import *
from django.conf import settings
from django.shortcuts import render_to_response
import xlrd
from time import strftime
from symbol import except_clause
def procesa(request, procesar = 0):
datos = None
infoarchivo = None
if(procesar > 0):
try:
infoarchivo = archivo.objects.get(archivo_id=int(procesar))
except:
return render_to_response('error.html')
if (infoarchivo is not None):
excel_path = settings.FILES_URL+infoarchivo.archivo_original
wb = xlrd.open_workbook(str(excel_path))
sh = wb.sheet_by_index(0)
##START UPDATE##
infoarchivo2 = archivo.objects.filter(archivo_id = procesar)
infoarchivo2.archivo_registros = sh.nrows
infoarchivo2.save()
##END UPDATE##
for rownum in range(sh.nrows):
destino = str(sh.cell(rownum,0).value)
destino = destino.replace(".0","")
if (int(destino) > 0):
mensaje = str(sh.cell(rownum,1).value)
ahora = strftime("%Y-%m-%d %H:%M:%S")
reg = registro.objects.filter(registro_destino__exact=destino,fk_archivo__exact=procesar)
#reg = registro.objects.raw(str(el_query))
if (reg.exists()):
exists = True
else:
r = registro(fk_cliente=1,fk_usuario=1,fk_archivo=int(procesar),registro_destino=destino,registro_mensaje=mensaje,registro_estado='Cargado',registro_fecha_carga=ahora)
r.save()
datos = {'ID':procesar,'PATH': settings.FILES_URL, 'INFO':infoarchivo, 'el_excel':infoarchivo.archivo_original, 'registros':sh.nrows }
return render_to_response('carga.html', {'datos': datos})
nel ## AVVIO UPDATE # # blocco che ho già provato con
infoarchivo.archivo_registros = sh.nrows
infoarchivo.save()
e
archivo.objects.filter(archivo_id = procesar).update(archivo_registros=sh.nrows)
e
archivo.objects.get(archivo_id = procesar).update(archivo_registros=sh.nrows)
non riesco a trovare alcun riferimento a questo errore o qualcosa di altro da aggiungere nel file di modelli, sono abbastanza sicuro che sia qualcosa di veramente facile risolvere, ma non riesco a trovarlo.
l'errore che sto ottenendo (per tutti i diversi codici) è
Tipo eccezione: AttributeError a/procesa/4
Eccezione Valore: oggetto 'archivo' non ha alcun aggiornamento attributo' '
I record del file vengono analizzati e inseriti senza problemi.
sto usando Django 1.5 con python 2.7 in Apache 2.2 con mod_wsgi e MySQL backend installati in EC2 su Amazon
UPDATE stavo facendo un po 'di manutenzione sul server ed ho ripartito ... una volta che è venuto il codice funzionava bene ... il che mi fa preoccupare lo stesso ...
penso che sia un bug su mod_wsgi.
Grazie comunque!
tua ignorando l'aggiornamento che non hai definito nel modello. Riscrivi il codice che usi il metodo di aggiornamento OPPURE definisci il metodo di aggiornamento nel tuo modello in modo che tu possa usarlo – catherine