SO に頼る必要がないことを本当に望んでいましたが、今では気が狂っているので、ここに行きます...
# models.py
[...]
from datetime import datetime as dt
class Foo(models.Model):
[...]
date_time = models.DateTimeField(auto_now_add=True)
class Meta:
ordering = ['-date_time']
def is_fresh(self):
if (dt.now() - self.date_time).seconds < settings.FOO_LIFESPAN:
return True
else:
return False
def __unicode__(self):
return u'%s|%s %s' % ([...], self.date_time)
is_fresh()
メソッドを使用しようとすると、AttributeError: 'Foo' object has no attribute 'is_fresh'
.
SOでこの問題を抱えていた他の人が、インデントを修正することで解決したことを見てきました。ここではそうではないと確信しています (有名な最後の言葉)。私は Eclipse で作業していますが、他のこっそりとしたインデント関連のエラーは発生していません...
何かご意見は?
編集
これを Dajaxice/Dajax 関数の一部として使用しています。
# ajax.py
def seek_bar(request, name):
# Other stuff goes here. I know that it works 100%
foo_list = []
[...]
for receipt in receipts:
foo_list.append((receipt.foos.all()[0], receipt.pk))
[...]
# Check freshness
for (foo, bar) in foo_list:
if foo.is_fresh():
dajax.add_css_class('#timer_0%s' % bar, 'fresh')
else:
dajax.remove_css_class('#timer_0%s' % bar, 'fresh')
dajax.add_css_class('#timer_0%s' % bar, 'stale')