子查询选择where子句

克里斯纳迪

我有这个SQL语句:

SELECT * FROM result WHERE bet_id IN (SELECT id FROM bet WHERE STATUS="Active")

这是我的看法:

def manageresult(request):
    if 'usid' in request.session:
        result = Result.objects.all()
        admin = Admin.objects.get(id=request.session['usid'])
        return render(request, 'manageresult.html', {'result':result,'admin':admin})
    else:
        return redirect('login')

如何更改result = Result.objects.all()为该sql语句?这是下注模型:

class Bet(models.Model):
    status = models.CharField(max_length=20, default="Active")

这是结果模型:

class Result(models.Model):
    bet = models.OneToOneField(Bet, on_delete=models.CASCADE)
色皮

免责声明:撰写此答案时,所涉及的模型未知

如果Result模型具有ForeignKeyto Bet,则可以按联接进行过滤-它将使其更像

result = Result.objects.filter(bet__status='Active')

它将转换为以下SQL查询

SELECT result.* FROM result INNER JOIN bet on result.bet_id = bet.id WHERE bet.STATUS="Active"

请参阅有关跨关系的查找的Django文档

如果不是这种情况,托多(Todor)的答案就是解决之道

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章