gpt4 book ai didi

Django自定义模型方法抛出属性错误

转载 作者:行者123 更新时间:2023-12-02 11:31:52 25 4
gpt4 key购买 nike

我真的希望我不必为此求助于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'

我看到其他遇到这个问题的人已经通过修复缩进解决了这个问题。我相信这里的情况并非如此(著名的遗言)。我正在 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')

最佳答案

我想通了,我想踢墙!

问题与我的文件结构以及导入模型的方式有关。我有两个共享相同 models.py 的应用程序,因此我将其放在单独的文件夹中,如下所示:

my_project/
|
backend/
|
models/
- __init__.py
- models.py

在ajax.py中,我像这样导入Foo:from my_project.backend.models import Foo, ..., 。它可以满足我所需的一切,直到 is_fresh()伴随着。我刚刚尝试过from my_project.backend.models.models import Foo, ..., ,你瞧,它成功了!而且我觉得很傻...

如果有人能告诉我为什么...backend.models适用于除我的自定义方法之外的所有内容,但我需要 ...backend.models.models对于完整的功能,最好知道。

关于Django自定义模型方法抛出属性错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15666878/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com