对象没有属性'prepare
在我的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'的方法。只要把这个方法改个名字,就能解决这个问题。