擅长:python、mysql、java
<p><strong>不,不能基于模型方法或属性执行查找。Django ORM不允许这样做。</strong></p>
<p>查询被编译为SQL,在数据库级别发送和处理,而属性是Python代码,数据库对此一无所知。这就是为什么Django过滤器只允许我们使用数据库字段的原因。</p>
<p><strong>可以做到:</strong></p>
<pre><code>Order.objects.filter(created=..) # valid as 'created' is a model field
</code></pre>
<p><strong>不能这样做:</strong></p>
<pre><code>Order.objects.filter(expires=..) # INVALID as 'expires' is a model property
</code></pre>
<p>相反,您可以使用列表理解来获得所需的结果。</p>
<pre><code>[obj for obj in Order.objects.all() if obj.expire in days]
</code></pre>
<p>上面将给出在<code>days</code>列表中具有<code>expire</code>值的<code>Order</code>对象的列表。</p>