Sono in procinto di aggiornare il mio progetto da Django 1.8.2 a 1.9.7 e sto ottenendo questo avvertimento:Django: timezone.now vs timezone.now()
WARNINGS:
my_app.my_model.date_available: (fields.W161) Fixed default value provided.
HINT: It seems you set a fixed date/time/datetime value as default for this field. This may not be what you want.
If you want to have the current date as default, use `django.utils.timezone.now
Ecco la linea da my_app/models.py:
from django.utils import timezone
...
class my_model(models.Model):
...
datetime_released = models.DateTimeField(default=timezone.now())
Se rimuovo le parentesi e di utilizzare invece:
datetime_released = models.DateTimeField(default=timezone.now)
L'avvertimento Django va via. Qual è la differenza tra i due?
In un'altra zona del mio progetto sto usando timezone.now() in un filtro set di query:
def date_available(self):
return self.filter(date_available__lte = timezone.now())
Qui, se tolgo le parentesi, viene generato un errore:
TypeError: expected string or buffer
posso ottenere entrambi questi due lavorano con l'aggiunta/rimozione la parentesi come richiedono d, ma qual è la differenza tra timezone.now()
e timezone.now
e perché causano avvertimenti/errori in questi casi?
type (now()) consente di rieseguire un oggetto datetime. type (now) ripete ora il metodo – gtalarico