擅长:python、mysql、java
<p>您可以尝试获取<em>四个</em>元素,如果它返回4个,则显示<em>第一个</em>三个元素,并指定数据被剪裁,如下所示:</p>
<pre><code>def get_queryset(self):
"""
Optionally restricts the returned purchases to a given user,
by filtering against a `username` query parameter in the URL.
"""
queryset = Part.objects.all()
querydict = self.request.query_params
for (k, value) in querydict.items():
search_type = 'contains'
filter = k + '__' + search_type
queryset = queryset.filter(**{filter: value})
query_max_limit = 3
qs = queryset[:query_max_limit+1]
self.clipped = clipped = len(qs) > query_max_limit
if clipped:
return list(qs)[:query_max_limit]
else:
return qs
</code></pre>
<p>所以这里的<code>get_queryset</code>将返回一个集合(本身不是<code>QuerySet</code>),最多包含<em>三个元素,并且它将设置一个属性<code>self.clipped</code>,该属性指定数据是否被剪裁。在</p>
<p>或者更优雅的方法是先计数,然后切片:</p>
^{pr2}$
<p>最好将这个“剪切”逻辑移到一个专用函数中,如果被剪裁,则返回,而不是设置属性。在</p>