Django: timezone.now vs timezone.now ()
Estou no processo de atualizar meu projeto do Django 1.8.2 para 1.9.7 e estou recebendo este aviso:
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
Aqui está a linha de my_app / models.py:
from django.utils import timezone
...
class my_model(models.Model):
...
datetime_released = models.DateTimeField(default=timezone.now() )
Se eu remover os parênteses e usar:
datetime_released = models.DateTimeField(default=timezone.now )
O aviso do Django desaparece. Qual a diferença entre os dois?
Em outra área do meu projeto, estou usando timezone.now () em um filtro do queryset:
def date_available(self):
return self.filter(date_available__lte = timezone.now())
Aqui, se eu remover os parênteses, um erro será gerado:
TypeError: expected string or buffer
Posso obter esses dois trabalhos adicionando / removendo os parênteses, conforme necessário, mas qual é a diferença entretimezone.now()
etimezone.now
e por que eles causam avisos / erros nesses casos?