假设我有一个带有多个可选过滤器的查询方法.我想要实现的是,如果我传递一些非None值来过滤参数然后做一个过滤器,如果过滤值是None,那么就忽略它.
def get_query_results(filter1=None, filter2=None, ...):
res = models.Item.query
if filter1 is not None:
res = res.filter(filter1=filter1)
if filter2 is not None:
res = res.filter(filter2=filter2)
....
return res.all()
Run Code Online (Sandbox Code Playgroud)
我想避免的是模式
if XXX:
res.filter(XXX=XXX)
Run Code Online (Sandbox Code Playgroud)
我想知道是否有更优雅的方式来实现这一目标?
例如,将各种过滤器作为参数传递?
或者,当过滤器值为None时,我们可以做一些魔术来省略过滤器?
我想要一个像这样的布局
框架内部有一个主面板,左侧和右侧有空白填充,另一个子面板位于中间。位于子面板顶部的静态文本元素,更改窗口大小时应正确换行。
我的代码片段如下所示
import wx
class MyPanel(wx.Panel):
def __init__(self, parent):
super(MyPanel, self).__init__(parent)
self.hsizer = wx.BoxSizer()
self.hsizer.AddStretchSpacer()
self.panel = wx.Panel(self)
self.panel.SetSize((350, -1))
self.vsizer = wx.BoxSizer(wx.VERTICAL)
label = (
"This is a long scentence that I want it wrapped properly, "
"but it doesn't seem to work at work. "
"I prefer if you guys can give any sugeestions or help. "
"For Long Long Long Long Long scentence."
)
style = wx.ALIGN_LEFT
self.static_text = wx.StaticText(self, label=label, style=style)
self.vsizer.Add(self.static_text, flag=wx.EXPAND | wx.ALL …Run Code Online (Sandbox Code Playgroud)