gpt4 book ai didi

python - Django,我的 TabularInline 中有许多重复的查询

转载 作者:行者123 更新时间:2023-11-29 20:07:55 24 4
gpt4 key购买 nike

这是我的 models.py 的一部分:

class Media(TimeStampedModel):
name = models.CharField(max_length=20)

class Topic(TimeStampedModel):
medias = models.ManyToManyField(Media, through='TopicAndMedia')

class TopicAndMedia(models.Model):
topic = models.ForeignKey(Topic)
media = models.ForeignKey(Media)
order = models.IntegerField(default=0)

这是我的 admin.py 的一部分:

class TopicAndMediaInline(admin.TabularInline):
model = TopicAndMedia

class TopicAdmin(admin.ModelAdmin):
inlines = (TopicAndMediaInline, )
...

当我访问 TOPIC 管理站点时,速度太慢。这是 django-debug-tool 的快照

enter image description here

有许多重复的时间成本查询,例如 select * from 'topics_media'。我该如何解决这个问题?

最佳答案

您面临着 django QuerySets 的典型问题。您收到此查询是因为当您访问未事先预取的相关对象时,您会进行额外的数据库命中。

了解更多 https://docs.djangoproject.com/en/1.10/ref/models/querysets/#select-relatedhttps://docs.djangoproject.com/en/1.10/ref/models/querysets/#prefetch-related

这应该可以解决您的问题

class TopicAdmin(admin.ModelAdmin):
inlines = (TopicAndMediaInline,)

def get_queryset(self, request):
qs = super(TopicAdmin, self).get_queryset(request)
qs = qs.prefetch_related('medias')
return qs

关于python - Django,我的 TabularInline 中有许多重复的查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40279763/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com