CẬP NHẬTDjango lỗi <model> đối tượng không có thuộc tính 'cập nhật'
tôi đang làm một số bảo trì trên máy chủ và khởi động lại ... một khi nó trở lại mã chỉ làm việc tốt ... mà thực sự làm cho tôi chỉ cần lo lắng ...
tôi nghĩ đó là lỗi trên mod_wsgi.
Cảm ơn bạn!
Tôi thực sự mới với django (bắt đầu hôm qua). Tôi quản lý để làm cho một phân tích excel sử dụng xlrd, mọi thứ hoạt động tốt với dữ liệu (nó tải thực sự thực sự nhanh), tôi cần cập nhật thông tin tập tin trong cơ sở dữ liệu để tôi có thể biết được tải như thế nào, đây là nơi tôi có vấn đề, phương thức save() không hoạt động, tôi đã sử dụng cập nhật cùng với get và filter, nhưng luôn luôn có cùng một vấn đề.
Tôi hy vọng bạn có thể trỏ tôi ra đâu là sai lầm
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})
trong ## BẮT ĐẦU CẬP NHẬT # # block tôi đã thử với
infoarchivo.archivo_registros = sh.nrows
infoarchivo.save()
và
archivo.objects.filter(archivo_id = procesar).update(archivo_registros=sh.nrows)
và
archivo.objects.get(archivo_id = procesar).update(archivo_registros=sh.nrows)
tôi không thể tìm thấy bất kỳ tài liệu tham khảo để lỗi này hay cái gì khác để thêm vào các mô hình tập tin, tôi khá chắc chắn đó là một cái gì đó thực sự dễ dàng để khắc phục, nhưng tôi không thể tìm thấy nó.
Các lỗi tôi nhận được (đối với tất cả các mã khác nhau) là Loại
Ngoại lệ: AttributeError tại/procesa/4
ngoại lệ giá trị gia tăng: đối tượng 'Archivo' không có thuộc tính 'cập nhật '
Bản ghi của tệp được phân tích cú pháp và chèn vào không có vấn đề gì.
Tôi đang sử dụng Django 1,5 với python 2,7 trong Apache 2.2 với mod_wsgi và mysql backend được cài đặt trong EC2 trên Amazon
CẬP NHẬT tôi đang làm một số bảo trì trên máy chủ và khởi động lại ... khi nó đến trở lại mã làm việc tốt ... mà thực sự làm cho tôi phải lo lắng giống nhau ...
tôi nghĩ rằng đó là một lỗi trên mod_wsgi.
Cảm ơn bạn!
trọng của bạn cập nhật mà bạn không xác định trong mô hình của bạn. Viết lại mã mà bạn sử dụng phương thức cập nhật HOẶC xác định phương thức cập nhật trong mô hình của bạn để bạn có thể sử dụng nó – catherine