简体   繁体   中英

Can't save datetime.now() to DateTimeField

I've defined a model as follows (Shortened it for the question)

from datetime import datetime, date, timedelta

class Case(models.Model):
    received_email_sent = models.DateTimeField(null=True, blank=True, default=None)

    def send_received_email(self):
        message = settings.EMAIL_HEADER + self.case_received_email() + settings.EMAIL_FOOTER
        send_mail('Subject here', message, settings.EMAIL_HOST_USER, ['xxx@xxx.com'], fail_silently=False)
        self.received_email_sent = datetime.now()

and in the view I call send_received_email on an existing object. I know that the send_received_email block is being entered because I'm receiving the emails every time I test this out, but the self.received_email_sent = datetime.now() part is leaving that field as its default value (None) every time. Here's the relevant part of the view:

from logbook.models import Case

def job_email(request, case_id):
    case = get_object_or_404(Case,pk=case_id)
    case.send_received_email()
    return HttpResponseRedirect('/jobs/'+str(case.case_id))

I have also tried an alternative method, where saving the field is done in the view instead of the model, like so:

models:

class Case(models.Model):
    received_email_sent = models.DateTimeField(null=True, blank=True, default=None)
    def send_received_email(self):
        message = settings.EMAIL_HEADER + self.case_received_email() + settings.EMAIL_FOOTER
        send_mail('Subject here', message, settings.EMAIL_HOST_USER, ['xxx@xxx.com'], fail_silently=False)
        #self.received_email_sent = datetime.now()

views:

from datetime import datetime
from logbook.models import Case

def job_email(request, case_id):
    case = get_object_or_404(Case,pk=case_id)
    case.send_received_email()
    case.received_email_sent = datetime.now()
    return HttpResponseRedirect('/jobs/'+str(case.case_id))

I have also tried both of the above routes with various tweaks like removing the brackets on now() and changing from datetime import datetime to just import datetime . No joy. Thanks for having a look at this.

您需要在self.save()的末尾调用send_received_email()

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM