<p>可能有一些Django细节可以帮助您,但是我建议您首先考虑Python。在</p>
<p>对于第一个任务,我认为您可能会从<code>filter</code>中受益。在</p>
<p>首先,我们需要您要检查的值的列表:</p>
<pre><code>values_we_care_about = ['nationality_visa_country_of_birth'
'nationality_visa_citizenship'
'nationality_visa_residency'
'nationality_visa_work_visa',
etc.]
</code></pre>
<p>下一步,我们需要把你用来检查东西的逻辑提炼成一个简单的函数</p>
^{pr2}$
<p>现在,我们可以使用这个函数来过滤<em>所有</em>值(如果您使用Python2,它将立即返回一个列表,但是如果您使用Python3,您将得到一个生成器;我假设Python2):</p>
<pre><code>checked_values = filter(checking_stuff_function, values_we_care_about)
</code></pre>
<p>现在,我们可以检查有多少<code>checked_values</code>通过了。你可能已经知道这是怎么回事了。。。在</p>
<pre><code>if len(checked_values) < 1:
# There's an error!
</code></pre>
<p>现在,您只需要重置表单(因为我们之前使用了过滤器,为什么不在这里使用<code>map</code>)呢?)公司名称:</p>
<pre><code>map(lambda val: del self.cleaned_data[val], values_we_care_about]
</code></pre>
<p>不过,我从来没有用过表格。真的有必要在重写的clean方法中删除它们吗?在视图中不能更好地处理这个问题吗?我会让别人来回答。在</p>
<p>之后你就可以把表格还给我了。在</p>
<p><strong>编辑</strong></p>
<p>我忘了你的错误。这也可以用一种类似于我们在这里所做的方式来完成,所以我不想详细说明。在</p>
<p>你的原始代码所缺少的基本原则是:“不要重复你自己”。试着在你所做的事情中找到共同的模式,并利用这些模式来发挥你的优势。如果您在三到四个地方编写相同的字符串数组,这是一个问题。将它们保存到一个列表中,然后对它们进行迭代。要读的代码要少得多。在</p>