在我的django项目中,我有4个模型都链在一起。
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值,但也没有取得任何成功。
答案 0 :(得分:2)
http://code.djangoproject.com/ticket/13640
在名为“evaluate”的模型上定义方法时会出现此错误。重命名方法可以解决问题。