[英]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.