擅长:python、mysql、java
<p>这里的问题是您的<code>.last()</code>将检索<em>最后一个</em><code>Settings</code>对象。因此,您将对<code>Settings</code>对象调用<code>.values('bb_bonus')</code>。由于模型没有<code>.values(..)</code>方法,因此它不会返回任何内容。在</p>
<p>但是,您可以使用以下方法从查询集检索特定列的值:</p>
<pre><code>Settings.objects<b>.values_list('bb_bonus_qualify', flat=True)</b>.last()</code></pre>
<p>因此我们这里使用<a href="https://docs.djangoproject.com/en/dev/ref/models/querysets/#values-list" rel="nofollow noreferrer"><strong>^{<cd6>}</strong> [Django-doc]</a>,它接受列的名称作为参数。然后它通常会返回一个<code>QuerySet</code>的列表,其中包含这些值。但是,如果指定<em>一个</em>列;那么,如文档所述:</p>
<blockquote>
<p>If you only pass in a single field, you can also pass in the <code>flat</code> parameter. If <strong><code>True</code>, this will mean the returned results are single values</strong>, rather than one-tuples.</p>
</blockquote>
<p>所以这意味着我们创建一个单数值的<code>QuerySet</code>,然后我们将检索该查询集的最后一个条目。注意,我们从查询集中提取所有元素,<code>.last()</code>是在我们对数据库执行的查询中“注入”的,因此结果是最后一条记录的该列的标量值。在</p>
<p>因此,<code>.values_list(..)</code>需要在<code>.last()</code>之前执行<em>,因为否则您正在与<code>Settings</code>对象对话,而不是与<code>QuerySet</code>进行对话。在</p>