UPDATEDjango błąd <model> obiekt ma atrybut „update”
robię pewne utrzymanie na serwerze i uruchomiony ponownie ... raz wrócił kod pracował dobrze ... co rzeczywiście sprawia mi martwić się tak samo ...
Myślę, że to błąd na mod_wsgi.
Dzięki!
Jestem naprawdę nowy dla django (rozpoczęty wczoraj). Udało mi się zrobić parser excel za pomocą xlrd, wszystko działa dobrze z danymi (ładuje się naprawdę bardzo szybko), muszę zaktualizować informacje o pliku w bazie danych, więc mogę wiedzieć, jak działa obciążenie, to jest, gdzie mam problem, metoda save() nie działa, ja już użyłem aktualizacji wraz z get i filtrem, ale zawsze ten sam problem.
Mam nadzieję, że można wskazać mi gdzie jest błąd
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})
w ## START UPDATE # # blok już próbowałem z
infoarchivo.archivo_registros = sh.nrows
infoarchivo.save()
i
archivo.objects.filter(archivo_id = procesar).update(archivo_registros=sh.nrows)
i
archivo.objects.get(archivo_id = procesar).update(archivo_registros=sh.nrows)
nie mogę znaleźć żadnego odniesienia do tego błędu lub coś innego, aby dodać do pliku modeli, jestem całkiem pewien, że to coś naprawdę proste naprawić, ale po prostu nie mogę go znaleźć.
Błąd Dostaję (dla wszystkich różnych kodów) jest
Wyjątek Typ: AttributeError w/procesa/4
Wyjątek Wartość: 'Archiwum' obiekt ma atrybut „aktualizacji '
Zapisy pliku są przetwarzane i wstawiane bez problemu.
Używam Django 1.5 z Pythona 2.7 w Apache 2.2 z zainstalowanym w EC2 na Amazon mod_wsgi i mysql backend
UPDATE robię pewne utrzymanie na serwerze i uruchomiony ponownie ... raz przyszło z powrotem kod działał dobrze ... co właściwie sprawia, że martwię się tak samo ...
Myślę, że to błąd na mod_wsgi.
Dzięki!
swoje nadrzędne aktualizację którego nie zdefiniował w swoim modelu. Przepisz kod, który używasz metody aktualizacji LUB zdefiniuj metodę aktualizacji w swoim modelu, abyś mógł z niej korzystać – catherine