擅长:python、mysql、java
<p>使用<a href="https://docs.djangoproject.com/en/dev/ref/models/querysets/#extra" rel="nofollow">^{<cd1>}</a>:</p>
<pre><code>Piece.objects.extra(select={'was_favorited': '''
SELECT
CASE WHEN id IS NULL THEN false ELSE true END
FROM appname_favoritedpieces
WHERE appname_favoritedpieces.piece_id = appname_piece.id
'''})
</code></pre>
<p>这将给您一个额外的字段<code>'was_favorited'</code>。然而,如果你所做的只是检查作品是否受欢迎,有更简单的方法:</p>
<p>测试字段本身:</p>
<pre><code>for p in Piece.objects.all():
if p.favorited:
pass # do something if the Piece was favorited
</code></pre>
<p>如果确实需要该布尔值,请添加属性<code>was_favorited()</code>:</p>
<pre><code>class Piece(models.Model):
...
@property
def was_favorited(self):
return true if self.favorited else false
# then you can call this property on Piece objects:
>>> Piece.objects.get(name="No one's favorite").was_favorited
False
</code></pre>