【发布时间】:2014-09-01 09:04:36
【问题描述】:
我正在使用Django 1.6 并使用模型继承。标题可能比较混乱,下面是解释;
class ParentModel(models.Model)
class Meta:
db_table = "parent_model"
my_field=.....
class ProxyModelOfParentModel(ParentModel)
class Meta:
proxy=True
objects=CustomManager()
class InheritedModel(ParentModel)
class Meta:
db_table = "inherited_model"
my_extra_field=.....
假设,这些是我们的模型。当我尝试在 ParentModel 上按 my_extra_field 过滤时,我会这样做;
ParentModel.objects.filter(inheritedmodel__my_extra_field='test')
但是,我想过滤代理模型,比如;
ProxyModelOfParentModel.objects.filter(inheritedmodel__my_extra_field='test')
当我运行它时,它将无法在代理模型中找到字段 inheritedmodel。这也可能是 Django 中的错误,我不知道。不知何故,当我尝试过滤代理模型时,django 现在确实正确构建了查询集。
我使用代理模型而不是父模型的原因是,在不同的管理员中使用代理模型。当我在管理员list_filter 中输入密钥时,我遇到了FieldDoesNotExists 错误。
有没有我提到的过滤方法? 谢谢!
【问题讨论】: