2016-12-16 99 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))

所以你去,我的未来谁将会不可避免地再次做到这一点;)