<html><head></head><body><div style="color:#000; background-color:#fff; font-family:verdana, helvetica, sans-serif;font-size:16px"><div id="yui_3_16_0_1_1444834190364_7043"><span>Hi All,</span></div><div id="yui_3_16_0_1_1444834190364_7043"><span id="yui_3_16_0_1_1444834190364_7433">I'm sure this is a newbie question but I haven't been able to find the answer by searching. Probably because I don't know what this technique is called in Python. </span></div><div id="yui_3_16_0_1_1444834190364_7043" dir="ltr"><span id="yui_3_16_0_1_1444834190364_7150">I have created a class which extends the Flask-Appbuilder Model class which extends a SQLAlchemy class. I'm trying to validate that all required fields are populated. I have created this function that returns all the mapped attributes of the class:</span></div><div id="yui_3_16_0_1_1444834190364_7043" dir="ltr"><span><br></span></div><pre style="font-size: 9pt;" id="yui_3_16_0_1_1444834190364_7139" class=""><span style="color:#000080;font-weight:bold;" id="yui_3_16_0_1_1444834190364_7141" class="">def </span>get_obj_mapped_columns(dbObj):<br id="yui_3_16_0_1_1444834190364_7143" class=""> mapper = inspect(dbObj)<br id="yui_3_16_0_1_1444834190364_7145" class=""> <span style="color:#000080;font-weight:bold;" id="yui_3_16_0_1_1444834190364_7147" class="">return </span>mapper.mapper.columns<br id="yui_3_16_0_1_1444834190364_7149" class=""></pre><pre style="font-size: 9pt;" id="yui_3_16_0_1_1444834190364_7139" class=""><span style="color: rgb(0, 0, 128); font-weight: bold; font-size: 9pt;">This is my main class:</span><br></pre><pre style="font-size: 9pt;" id="yui_3_16_0_1_1444834190364_7139" class=""><pre style="font-size: 9pt;" id="yui_3_16_0_1_1444834190364_7175" class=""><span style="color:#000080;font-weight:bold;" class="" id="yui_3_16_0_1_1444834190364_7333"><pre style="color: rgb(0, 0, 0); font-size: 9pt;" id="yui_3_16_0_1_1444834190364_7251" class=""><span style="color: rgb(0, 0, 128);" id="yui_3_16_0_1_1444834190364_7253" class="">class </span>Event(Model):<br id="yui_3_16_0_1_1444834190364_7255" class=""> EventID = Column(Integer, <span style="color:#660099;" id="yui_3_16_0_1_1444834190364_7257" class="">primary_key</span>=<span style="color:#000080;" id="yui_3_16_0_1_1444834190364_7259" class="">True</span>)<br id="yui_3_16_0_1_1444834190364_7261" class=""> EventKey = Column(String(<span style="color:#0000ff;" id="yui_3_16_0_1_1444834190364_7263" class="">30</span>), <span style="color:#660099;" id="yui_3_16_0_1_1444834190364_7265" class="">unique</span>=<span style="color:#000080;" id="yui_3_16_0_1_1444834190364_7267" class="">True</span>, <span style="color:#660099;" id="yui_3_16_0_1_1444834190364_7269" class="">nullable</span>=<span style="color:#000080;" id="yui_3_16_0_1_1444834190364_7271" class="">False</span>)<br id="yui_3_16_0_1_1444834190364_7273" class=""> Name = Column(String(<span style="color:#0000ff;" id="yui_3_16_0_1_1444834190364_7275" class="">100</span>), <span style="color:#660099;" id="yui_3_16_0_1_1444834190364_7277" class="">nullable</span>=<span style="color:#000080;" id="yui_3_16_0_1_1444834190364_7279" class="">False</span>)<br id="yui_3_16_0_1_1444834190364_7281" class=""> Description = Column(Text(<span style="color:#0000ff;" id="yui_3_16_0_1_1444834190364_7283" class="">1000</span>), <span style="color:#660099;" id="yui_3_16_0_1_1444834190364_7285" class="">nullable</span>=<span style="color:#000080;" id="yui_3_16_0_1_1444834190364_7287" class="">False</span>)<br id="yui_3_16_0_1_1444834190364_7289" class=""> BeginDate = Column(Date)<br id="yui_3_16_0_1_1444834190364_7291" class=""> EndDate = Column(Date)<br id="yui_3_16_0_1_1444834190364_7293" class=""> RegBeginDate = Column(Date)<br id="yui_3_16_0_1_1444834190364_7295" class=""> RegEndDate = Column(Date)<br id="yui_3_16_0_1_1444834190364_7297" class=""> Location = Column(String(<span style="color:#0000ff;" id="yui_3_16_0_1_1444834190364_7299" class="">200</span>))<br id="yui_3_16_0_1_1444834190364_7301" class=""> Address1 = Column(String(<span style="color:#0000ff;" id="yui_3_16_0_1_1444834190364_7303" class="">200</span>))<br id="yui_3_16_0_1_1444834190364_7305" class=""> Address2 = Column(String(<span style="color:#0000ff;" id="yui_3_16_0_1_1444834190364_7307" class="">200</span>))<br id="yui_3_16_0_1_1444834190364_7309" class=""> City = Column(String(<span style="color:#0000ff;" id="yui_3_16_0_1_1444834190364_7311" class="">20</span>))<br id="yui_3_16_0_1_1444834190364_7313" class=""> State = Column(String(<span style="color:#0000ff;" id="yui_3_16_0_1_1444834190364_7315" class="">2</span>))<br id="yui_3_16_0_1_1444834190364_7317" class=""> Zip = Column(String(<span style="color:#0000ff;" id="yui_3_16_0_1_1444834190364_7319" class="">10</span>))<br id="yui_3_16_0_1_1444834190364_7321" class=""> URL = Column(String(<span style="color:#0000ff;" id="yui_3_16_0_1_1444834190364_7323" class="">100</span>))<br id="yui_3_16_0_1_1444834190364_7325" class=""> Email = Column(String(<span style="color:#0000ff;" id="yui_3_16_0_1_1444834190364_7327" class="">100</span>))<br id="yui_3_16_0_1_1444834190364_7329" class=""> Phone = Column(String(<span style="color:#0000ff;" id="yui_3_16_0_1_1444834190364_7331" class="">20</span>))</pre></span></pre><pre style="font-size: 9pt;" id="yui_3_16_0_1_1444834190364_7175" class=""><span style="color:#000080;font-weight:bold;" class="" id="yui_3_16_0_1_1444834190364_7347">Which contains the following method:</span></pre><pre style="font-size: 9pt;" id="yui_3_16_0_1_1444834190364_7175" class=""><span style="color:#000080;font-weight:bold;" id="yui_3_16_0_1_1444834190364_7177" class=""> def </span>isValid(<span style="color:#94558d;" id="yui_3_16_0_1_1444834190364_7179" class="">self</span>):<br id="yui_3_16_0_1_1444834190364_7181" class=""> columns = get_obj_mapped_columns(<span style="color:#94558d;" id="yui_3_16_0_1_1444834190364_7183" class="">self</span>)<br id="yui_3_16_0_1_1444834190364_7185" class=""> <span style="color:#000080;font-weight:bold;" id="yui_3_16_0_1_1444834190364_7187" class="">for </span>column <span style="color:#000080;font-weight:bold;" id="yui_3_16_0_1_1444834190364_7189" class="">in </span>columns:<br id="yui_3_16_0_1_1444834190364_7191" class=""> <span style="color:#000080;font-weight:bold;" id="yui_3_16_0_1_1444834190364_7193" class="">if </span>(NOT column.nullable):<br id="yui_3_16_0_1_1444834190364_7195" class=""> <span style="color:#000080;font-weight:bold;" id="yui_3_16_0_1_1444834190364_7197" class="">print </span>column.name<br id="yui_3_16_0_1_1444834190364_7199" class=""> <span style="color:#000080;font-weight:bold;" id="yui_3_16_0_1_1444834190364_7201" class="">print </span><span style="color:#94558d;" id="yui_3_16_0_1_1444834190364_7203" class="">self</span>.<b id="yui_3_16_0_1_1444834190364_7387"><column.name></b><br id="yui_3_16_0_1_1444834190364_7205" class=""></pre></pre><div id="yui_3_16_0_1_1444834190364_7043" dir="ltr"><span><br></span></div><div id="yui_3_16_0_1_1444834190364_7043" dir="ltr"><span id="yui_3_16_0_1_1444834190364_7165">I would like to substitute the value in <column.name> in such a way that it is evaluated as the field name of the Event object.</span></div><div id="yui_3_16_0_1_1444834190364_7043" dir="ltr"><span><br></span></div><div id="yui_3_16_0_1_1444834190364_7043" dir="ltr"><span id="yui_3_16_0_1_1444834190364_7458">Any guidance would be greatly appreciated!</span></div><div id="yui_3_16_0_1_1444834190364_7043" dir="ltr"><span><br></span></div><div id="yui_3_16_0_1_1444834190364_7043" dir="ltr"><span>Thanks,</span></div><div id="yui_3_16_0_1_1444834190364_7043" dir="ltr"><span>Jim</span></div><div></div><div id="yui_3_16_0_1_1444834190364_7042"> </div><div class="signature" id="yui_3_16_0_1_1444834190364_7041">Jim
</div></div></body></html>