How to make the argument to filter() a variable?

后端 未结 2 1527
南旧
南旧 2021-01-28 07:40

I have this model

class Item(db.Model):
    ...   
    glam = db.StringProperty()
    casual = db.StringProperty()
    speaking = db.StringProperty()


        
相关标签:
2条回答
  • 2021-01-28 08:13
    query.filter(self.request.get("tag"), self.request.get("tag"))
    

    The = is actually not required.

    However, I'd also consider using a single StringProperty for the tag, since it appears that your 3 string properties are essentially booleans, and only one of them can be true at a time.

    0 讨论(0)
  • 2021-01-28 08:18

    Would that do what you're looking for:

    choice = self.request.get("tag")
    query.filter(choice, choice)
    

    However, I agree with Wooble below. The way you have designed it, you dont' really use glam, casual, speaking as StringProperty, since they are either empty or have a specific value.

    What you probably want to do is have a tag property that can take different values from glam, formal, speaking, ...

    class Item(db.Model):
        ...   
        tag = db.StringProperty()
    

    And then you would query your db like so:

    query.filter("tag", self.request.get("tag"))
    
    0 讨论(0)
提交回复
热议问题