将字符串与 CharField 与 peewee 进行比较?
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
并希望它 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))
所以你走了,未来的我不可避免地会再次这样做;)
我正在尝试获取给定字符串 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
并希望它 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))
所以你走了,未来的我不可避免地会再次这样做;)