将字符串与 CharField 与 peewee 进行比较?

Compare string with CharField with peewee?

我正在尝试获取给定字符串 addressmodels.Listing.address 中的结果列表。我现在的代码是:

@app.route('/search/<address>')
def search(address):
    results = models.Listing.select().where(address << models.Listing.address)

    return render_template('search.html', results=results)

例如,我可能会传入 39 Main Road 并希望它 select 给定列表的地址字段中 ​​39 Main Road 的记录(完整地址为 39 Main Road RICHMOND, NSW, Australia)

但是,我当前的代码错误为:TypeError: unsupported operand type(s) for <<: 'str' and 'CharField'

我试过将 models.Listing.address 转换为 str 但只是 returns unsupported operand type(s) for <<: 'str' and 'str'

我会使用 address in models.Listing.address 但根据 the docs and this answer 必须使用 << 运算符。

此外,我尝试使用 address.in_(models.Listing.address) 哪个字符串没有 属性 用于...

是因为我没有将 CharField 与 CharField 进行比较吗?如果是这样,我如何将字符串与 CharField 进行比较?我试过将 CharField 更改为字符串,但我不能将 in 与 peewee 一起使用,因为正如@coleifer 在 this answer:

的评论中所说

Python always coerces the return value of x in y to a boolean, necessitating the use of the << operator.

提前致谢!

嗯...我很快就发现了:

x << y 用于检查记录 x 是否在记录 y

的列表或查询中

而我试图实现的功能是由以下人员完成的:

.where(models.Listing.address.contains(address))

所以你走了,未来的我不可避免地会再次这样做;)