对象没有属性'prepare

1 投票
1 回答
827 浏览
提问于 2025-04-16 16:07

在我的Django项目中,我有四个模型,它们之间是有联系的,像一条链子一样。

模型关系是:Model_D > Model_C > Model_B > Model_A

也就是说,Model_C有一个外键字段指向Model_B,而Model_B又有一个外键字段指向Model_A。

当我像下面这样查找时,出现了一个错误:

Model_D.objects.filter(model_c = object_of_type_c)

错误信息是“Model_C没有'prepare'这个属性”。

但是,当我用另一种方式查找时,就没有错误了:

Model_D.objects.filter(model_c__id = object_of_type_c.id)

或者

Model_D.objects.filter(model_c = object_of_type_c.id)

我在这里或者谷歌上都找不到这个错误的相关信息。我觉得这可能和相关对象管理器的工作方式有关,但我现在卡住了。

补充说明:还有一个第五个模型,Model_E,也和Model_C有关联。当我尝试在这个模型上查找时也遇到了同样的问题。我不知道这是否会有所不同。

最奇怪的是,对于Model_C或Model_B的类似查找,似乎都能正常工作。

更新:

http://code.djangoproject.com/ticket/13640

Model_C有一个名为'evaluate'的方法,这个名字是保留的。通过重命名这个方法解决了问题。

我尝试过以多种方式调整这些模型的related_name值,但也没有成功。

1 个回答

2

http://code.djangoproject.com/ticket/13640

这个错误发生在你在一个模型上定义了一个叫做'evaluate'的方法。只要把这个方法改个名字,就能解决这个问题。

撰写回答