why does db.query(Item).all().filter(Item.is_active == True) fail with error AttributeError: 'list' object has no attribute 'filter'
why does db.query(Item).all().filter(Item.is_active == True) fail with error AttributeError: 'list' object has no attribute 'filter'
正如标题所说,在 db.query(Item).all() 之后添加 .filter 失败并出现 AttributeError: 'list' object has no attribute 'filter' .
items = db.query(Item).all().filter(Item.is_active == True)
return items
但是如果我删除 .filter 它可以工作,但我真的很想过滤。
def list_items(db : Session):
items = db.query(Item).all()
return items
这是路线:
@router.get("/all", response_model=List[ShowItem])
def read_items(db: Session = Depends(get_db)):
items = list_items(db=db)
return items
这里是 class:
class Item(BaseModel):
name: str
price: int
class Config():
orm_mode = True
这是 Table 数据库模型:
class Item(Base):
id = Column(Integer, primary_key=True, index=True)
name = Column(String, nullable=False)
price = (Column(Integer, nullable=False))
is_active = Column(Boolean(), default=True)
.all()
方法 returns 没有 filter
方法的列表,您需要首先使用 filter
然后 all
替换
items = db.query(Item).all().filter(Item.is_active == True)
使用
items = db.query(Item).filter(Item.is_active == True).all()
正如标题所说,在 db.query(Item).all() 之后添加 .filter 失败并出现 AttributeError: 'list' object has no attribute 'filter' .
items = db.query(Item).all().filter(Item.is_active == True)
return items
但是如果我删除 .filter 它可以工作,但我真的很想过滤。
def list_items(db : Session):
items = db.query(Item).all()
return items
这是路线:
@router.get("/all", response_model=List[ShowItem])
def read_items(db: Session = Depends(get_db)):
items = list_items(db=db)
return items
这里是 class:
class Item(BaseModel):
name: str
price: int
class Config():
orm_mode = True
这是 Table 数据库模型:
class Item(Base):
id = Column(Integer, primary_key=True, index=True)
name = Column(String, nullable=False)
price = (Column(Integer, nullable=False))
is_active = Column(Boolean(), default=True)
.all()
方法 returns 没有 filter
方法的列表,您需要首先使用 filter
然后 all
替换
items = db.query(Item).all().filter(Item.is_active == True)
使用
items = db.query(Item).filter(Item.is_active == True).all()