2016-12-16 80 views
0

我試圖獲得給定字符串addressmodels.Listing.address中的結果列表。我此刻的代碼是:與CharField比較字符串與peewee?

@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,但根據the docsthis answer,使用<<運算符是十分必要的。

而且,我已經使用address.in_(models.Listing.address)該字符串沒有是不是因爲我不是一個CharField比較一個CharField爲...

財產試過嗎?如果是這樣,我如何比較字符串與CharField?我試着改變CharField爲字符串,但因爲@coleifer在this answer評論說我不能使用in與peewee:

的Python總是x in y返回值強制轉換爲布爾,迫使使用<<運營商。

在此先感謝!

回答

1

嗯...我很快就發現:

x << y是檢查是否記錄x在記錄列表或查詢ÿ

,而我是想實現的功能是通過完成:

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

所以你去,我的未來誰將會不可避免地再次做到這一點;)