[英]Compare string with CharField with peewee?
我正在尝试获取结果列表,其中给定的字符串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
但是根据文档和这个答案 ,使用<<
操作符是必要的。
此外,我尝试使用address.in_(models.Listing.address)
哪个字符串不具有...的属性
是因为我没有将CharField与CharField进行比较? 如果是这样,我如何比较一个字符串和一个CharField? 我尝试将CharField更改为字符串,但无法与peewee配合使用in
因为正如@coleifer在此答案的评论中所说:
Python始终将
x in y
中x in y
的返回值强制为布尔值,因此必须使用<<
运算符。
提前致谢!
嗯...我很快就会发现:
x << y
用于检查记录x是否在记录y的列表或查询中
而我试图实现的功能是通过以下方式完成的:
.where(models.Listing.address.contains(address))
所以你去了,未来的我将不可避免地再次这样做;)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.