Django: timezone.now vs timezone.now ()
Ich aktualisiere gerade mein Projekt von Django 1.8.2 auf 1.9.7 und bekomme folgende Warnung:
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
Hier ist die Zeile von my_app / models.py:
from django.utils import timezone
...
class my_model(models.Model):
...
datetime_released = models.DateTimeField(default=timezone.now() )
Wenn ich die Klammern entferne und stattdessen Folgendes verwende:
datetime_released = models.DateTimeField(default=timezone.now )
Die Django-Warnung verschwindet. Was ist der Unterschied zwischen den beiden?
In einem anderen Bereich meines Projekts verwende ich timezone.now () in einem Abfragesatzfilter:
def date_available(self):
return self.filter(date_available__lte = timezone.now())
Hier, wenn ich die Klammern entferne, wird ein Fehler ausgegeben:
TypeError: expected string or buffer
Ich kann diese beiden Funktionen erhalten, indem ich die Klammern nach Bedarf hinzufüge / entferne, aber was ist der Unterschied zwischentimezone.now()
undtimezone.now
und warum verursachen sie in diesen Fällen Warnungen / Fehler?