Django ORM returns 不可迭代对象

Django ORM returns non-iterable object

模特是

class WeeklyStrMst(BaseModel):
    StoreId = models.AutoField(primary_key=True)
    TDLinx_No = models.IntegerField(blank=True, null=True, default=None)
    Week = models.IntegerField(blank=True, null=True, default=None)
    Week_Number = models.IntegerField(blank=True, null=True, default=None)
    Year = models.IntegerField(blank=True, null=True, default=None)
    Category = models.CharField(max_length=75, blank=True, null=True, default=None)
    SeasonalPackaging = models.CharField(max_length=75, blank=True, null=True, default=None)
    Consumption = models.CharField(max_length=75, blank=True, null=True, default=None)
    Manufacturer = models.CharField(max_length=75, blank=True, null=True, default=None)
    PackType = models.CharField(max_length=75, blank=True, null=True, default=None)
    Volume = models.FloatField(blank=True, null=True, default=None)
    POS = models.FloatField(blank=True, null=True, default=None)
    StoreName = models.CharField(max_length=75, blank=True, null=True, default=None)
    MasterChain = models.CharField(max_length=75, blank=True, null=True, default=None)
    TerritoryName = models.CharField(max_length=75, blank=True, null=True, default=None)
    RegionName = models.CharField(max_length=75, blank=True, null=True, default=None)
    StoreClassification = models.CharField(max_length=75, blank=True, null=True, default=None)
    StateName = models.CharField(max_length=75, blank=True, null=True, default=None)
    class Meta:
        managed = True
        db_table = config_data[settings.REGION_NAME]['tables']['weekly_mstr']

WeeklyStrMst.objects.filter(StoreId__in=stores).values()

这里的 stores 是包含 6000-30000 个非空整数值的列表数据类型,所以当我执行这个时,它 returns me -

<django.db.models.query.QuerySet object at 0x0000024FD4EAAAF0>

我已经用少于 2000 个值进行了测试,它工作正常。这种情况的可能原因和解决方法是什么? 如何传递一个大数组列表作为过滤条件?

QuerySet class is iterable - you can use it inside any for loop (even in templates).

values 函数 returns 字典的 QuerySet 而不是模型实例,请放心,它也是一个可迭代对象。

编辑 -

如果您在数据库中使用 SQLite,通常会限制可以为 IN 查询传递的值数量 - https://sqlite.org/limits.html。您可以根据您使用的系统更改此值。此外,如果您要处理极其繁重的数据集,最好使用可扩展性更强的数据库,例如 Postgres 或 MySQL.

谢谢大家,我不得不更新库mssql-django,早期版本对可以传递的参数数量有限制,他们已经更新了。