Объект 'module' не имеет атрибута 'now' будет пытаться создать CSV
Привет, у меня проблемы с импортом в csv, я получаю эту ошибку, проблема в том, что у меня такой же код работает на другой машине, и он работает отлично. Что мне не хватает, мне нужно установить для этого другую библиотеку?.
def exportar_a_csv_grl(request):
#Fecha actual
hoy = datetime.now().date()
#Creado el:
creado_hoy = hoy.strftime("%m/%d/%Y")
response = HttpResponse(mimetype='text/csv')
response['Content-Disposition'] = 'attachment;filename="Reporte de Miembros ' + creado_hoy + '.csv"'
response['Content-Type'] = 'text/csv; charset=utf-8'
response.write("\xEF\xBB\xBF")
writer = csv.writer(response)
miembros = Miembro.objects.all().extra(select={'miem_monto': "aplicacionmediexcel_miembro_monto.monto"},
tables=["aplicacionmediexcel_miembro_monto"], where=[
"""aplicacionmediexcel_miembro.id=aplicacionmediexcel_miembro_monto.miembro_id"""])
#.extra(select = {'precio':'''select aplicacionmediexcel_miembro_monto.monto from aplicacionmediexcel_miembro_monto, aplicacionmediexcel_miembro where aplicacionmediexcel_miembro.id = aplicacionmediexcel_miembro_monto.miembro_id'''})
miembros_colec = Miembro_colec.objects.all().extra(
select={'miem_monto': "aplicacionmediexcel_colectivo_miembro_monto.monto"},
tables=["aplicacionmediexcel_colectivo_miembro_monto"],
where=["""aplicacionmediexcel_miembro_colec.id=aplicacionmediexcel_colectivo_miembro_monto.miembro_colec_id"""])
dependientes = Dependiente.objects.all()
dependientes_colec = Dependiente_colec.objects.all()
writer.writerow(['Creado el: ' + creado_hoy + ' '])
writer.writerow([''])
#csv_data = (
# ('ID Miembro', 'Apellido Paterno', 'Nombre', 'MI', 'Numero de Seguro Social', 'Tipo de contratacion','Tier', 'Tipo de dependiente', 'Fecha de nacimiento', 'Edad', 'Sexo', 'Estado Civil', 'Correo Electronico', 'Domicilio', 'Ciudad','Estado', 'Codigo Postal', 'Telefono', 'Idioma', 'Region de servicio', 'Medico', 'Fecha Efectiva', 'Tipo Plan', 'Grupo', 'Monto'),
#)
writer.writerow(
['ID Miembro', 'Apellido Paterno', 'Nombre', 'MI', 'Número de Seguro Social', 'Tipo de contratación',
'Tier', 'Tipo de dependiente', 'Fecha de nacimiento', 'Edad', 'Sexo', 'Estado Civil', 'Correo Electrónico',
'Domicilio', 'Ciudad',
'Estado', 'Código Postal', 'Teléfono', 'Idioma', 'Región de servicio', 'Médico', 'Actividad', 'Fecha Efectiva',
'Fecha Renovación', 'Tipo Plan', 'Grupo', 'Monto'])
#t = loader.get_template('my_template_name.txt')
#c = Context({
# 'miembros': miembros,
#})
#response.write(t.render(c))
Ответы
Ответ 1
Вы, вероятно, имеете
import datetime
измените это на
from datetime import datetime
Демо-версия:
>>> import datetime
>>> datetime.now()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'module' object has no attribute 'now'
>>> from datetime import datetime
>>> datetime.now()
datetime.datetime(2013, 10, 7, 13, 57, 18, 456504)
>>>
Кроме того, вы столкнетесь с проблемами из-за отступов. Пожалуйста, исправьте их.
Ответ 2
Когда вы это сделаете
import datetime
вы должны использовать
>>> datetime.datetime.now()
datetime.datetime(2016, 12, 14, 1, 15, 58, 606802)
в противном случае, если вы импортируете
>>> from datetime import datetime
>>> datetime.now()
datetime.datetime(2016, 12, 14, 1, 17, 31, 772406)
Но на какой-то машине вы могли ссылаться на неправильный модуль datetime из-за sys.path, вместо того, чтобы делать from datetime import datetime
или import datetime
сделать привычку использовать
from datetime import datetime as dt
Ответ 3
У меня была такая же проблема, когда я использовал
from datetime import datetime,date,timedelta
import pytz
utc=pytz.UTC
today = datetime.now().replace(tzinfo=utc)
Решение для этого, которое я предлагаю, заключается в том, чтобы импортировать все зависимости
from datetime import *
import pytz
utc=pytz.UTC
today = datetime.now().replace(tzinfo=utc)