擅长:python、mysql、java
<p>使用<code>order_by('?')</code>将在生产的第二天杀死数据库服务器。更好的方法是像<a href="http://web.archive.org/web/20110802060451/http://bolddream.com/2010/01/22/getting-a-random-row-from-a-relational-database/" rel="noreferrer">Getting a random row from a relational database</a>中描述的那样。</p>
<pre><code>from django.db.models.aggregates import Count
from random import randint
class PaintingManager(models.Manager):
def random(self):
count = self.aggregate(count=Count('id'))['count']
random_index = randint(0, count - 1)
return self.all()[random_index]
</code></pre>