0

我正在尝试获取给定字符串所在的结果address列表models.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并希望它选择39 Main Road给定列表的地址字段中的记录(完整地址为39 Main Road RICHMOND, NSW, Australia

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

我已经尝试转换models.Listing.address为 str 但这只是返回unsupported operand type(s) for <<: 'str' and 'str'

我会使用address in models.Listing.address,但根据文档这个答案,使用<<运算符是必要的。

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

是因为我没有将 CharField 与 CharField 进行比较吗?如果是这样,我如何将字符串与 CharField 进行比较?我尝试将 CharField 更改为字符串,但我不能in与 peewee 一起使用,因为正如@coleifer 在此答案的评论中所说:

Python 总是将返回值强制为x in y布尔值,因此必须使用<<运算符。

提前致谢!

4

1 回答 1

1

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

x << y用于检查记录 x 是否在记录 y 的列表或查询中

而我试图实现的功能是通过以下方式完成的:

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

所以你去吧,未来的我将不可避免地再次这样做;)

于 2016-12-16T10:35:59.027 回答