[Answered ]-Isinstance(datetime.datetime, DateTimeField.value) always returns false for Django DateTimeField

2πŸ‘

βœ…

It seems you have missed assigning the naive datetime object back to the value datetime object.

It should be

value = value.replace(tzinfo=None) # assign 'naive' datetime object back to 'value'

instead of just

value.replace(tzinfo=None) # will just return 'naive' datetime object

The code now becomes:

import pytz
import datetime
....
for i, row in enumerate(list(Record.objects.all())):

    for j,field in enumerate(list(Record._meta.get_fields())):
            value = getattr(row,field.name)
            if isinstance(value, datetime.datetime):
                value = value.replace(tzinfo=None) # assign value as 'naive' datetime object 
                worksheet.write(i, j, value) # will now use 'naive' datetime object to write

            else:
                worksheet.write(i, j, value)

0πŸ‘

your question is not answered yet, your code always returns false because instead of using DateTimeField of django model you are using datetime.datetime

so insted of using:

if isinstance(value, datetime.datetime):

you should do:

from django.db.models.fields import DateTimeField
if isinstance(value, DateTimeField):

Leave a comment