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本身事先切它。 對此有何解釋?