带有子查询的 Django ListView 给出此版本的 MySQL 尚不支持 'LIMIT & IN/ALL/ANY/SOME 子查询'

2024-02-16

我有以下模型:

class Credit(models.Model):
  user = models.ForeignKey(User)
  ...

和一个列表视图

class CreditListView(ListView):
  paginate_by = 10
  model = Credit
  ...

如果我想在 CreditListView 中按用户过滤信用:

def get_queryset(self):
    users = User.objects.filter(...)[:10]
    credits = Credits.objects.filter(user__in=users)
    return credits

我会得到一个 NotSupportedError 异常:

(1235, "This version of MySQL doesn't yet support 'LIMIT & IN/ALL/ANY/SOME subquery'")

尝试这个 :

users = User.objects.filter(...)[:10]
users = list(users)
credits = Credits.objects.filter(user__in=users)

Django 模型返回的列表实际上不是 Python 列表,而是其扩展形式。但这有一些限制。因此,我们需要将其转换为 Python 可理解的列表。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

带有子查询的 Django ListView 给出此版本的 MySQL 尚不支持 'LIMIT & IN/ALL/ANY/SOME 子查询' 的相关文章

随机推荐