0
我有一个Story模型,它通过django-tagging应用程序包含一个TagField。 我正在读取特定标签的故事列表。在功能上,我的代码工作正常,但我遇到了一个我不太明白的行为。切片查询集是否与切片__in子句中使用的列表相同?无法理解此行为
以下代码正确地为我提供了所需的故事列表。
ct = ContentType.objects.get_for_model(Story)
ti = TaggedItem.objects.filter(tag__name='mobile',content_type=ct).values_list('object_id',flat=True)
stories = Story.published_objects.filter(id__in=ti)
但是,我只想要第一个50个故事。所以我做了什么:
ct = ContentType.objects.get_for_model(Story)
ti = TaggedItem.objects.filter(tag__name='mobile',content_type=ct).values_list('object_id',flat=True)
ti50 = ti[:50]
stories = Story.published_objects.filter(id__in=ti50)
在这里,我切列表本身只持有50个ID,然后送入切片列表__in条款。所以我预计列表中有50个故事。不过,我得到这个错误,而不是:
DatabaseError: (1235, "This version of MySQL doesn't yet support 'LIMIT & IN/ALL/ANY/SOME subquery'")
我不明白为什么在MySQL的正在使用的LIMIT
但我想在Python本身事先切它。 对此有何解释?