Django模型过滤遇阻,求排查错误:附Models.py代码
嘿,我来帮你排查Django模型过滤的问题!
首先一眼就看到你的czyGlowne方法里有个明显的错误:单个模型实例(也就是这里的self)根本不能直接调用filter()方法!filter()是用来查询一组对象(QuerySet)的方法,比如Images.objects或者关联对象的查询管理器才能用它。
先看你代码里的问题点
def czyGlowne(self): return self.filter(zdjecie_glowne='y')
这里的self是Images类的一个具体实例(比如某一张具体的图片),不是一个查询集合,所以调用self.filter()肯定会抛出属性错误,这就是你问题的根源。
接下来分两种情况给你修复方案
情况1:你想获取当前关联植物的所有主图
如果这个方法的目的是拿到当前图片所属植物(nazwa_polska关联的Roslina对象)的所有主图,那应该通过关联的查询管理器来过滤:
def czyGlowne(self): # 返回当前植物的所有主图查询集 return self.nazwa_polska.images.filter(zdjecie_glowne='y') # 如果只需要取第一张主图,可以改成这样: # return self.nazwa_polska.images.filter(zdjecie_glowne='y').first()
情况2:你想判断当前这张图片是不是主图
如果你的初衷只是检查当前这个Images实例本身是不是主图,那方法就简单多了:
def czyGlowne(self): return self.zdjecie_glowne == 'y'
最后给你两个小建议
- 模型类名建议改成单数
Image,符合Django的命名规范(每个实例对应一张图片,单数更合理) - 字段名可以换成英文,比如
zdjecie_glowne改成is_main,这样不管是自己后续维护还是团队协作,可读性都会更好~
内容的提问来源于stack exchange,提问作者Pepik
相关产品推荐
相关产品推荐

