Я потратил часы, пытаясь понять, что это безрезультатно .. Любая идея, почему эта проблема происходит?Сравнение Django datetime None - Почему?
models.py
from datetime import date, datetime
class Product(models.Model):
use_activation_date = models.BooleanField(default=False)
activation_date = models.DateTimeField(auto_now=False, auto_now_add=False, null=True, blank=True
@property
def is_active_by_date(self):
if self.use_activation_date:
if datetime.now() < self.activation_date:
return False #is not active because current date is before activate date
else:
return True #is active because date is = or past activation_date
else:
return True #is active because not using activation date
template.html
{% if not product.is_active_by_date %}
<!-- here is the problem, it is not returning True nor False! -->
{{ product.is_active_by_date }} <!-- getting blank result here -->
Product is not active
{% else %}
{{ product.is_active_by_date }}
Product is active
{% endif %}
Проблема происходит это, когда product.use_activation_date = True, {{ product.is_active_by_date }}
возвращает True; однако, как только свойство попадает в строку сравнения даты и времени: if datetime.now() < self.activation_date
происходит что-то неправильно, и возвращается None. Я попробовал распечатать datetime.now() и self.activation_date, и они оба отображаются в равном формате, например. «18 ноября 2015 года, 10:00» и все выглядит нормально ..
Что происходит? Любая помощь чрезвычайно ценится!
в ложном случае, что вы видите, если вы просто выведете '{{product}}'? – Anentropic