在Django中,ManyToMany关系是通过中间表来实现的。在使用TabularAdminInline时,如果ManyToMany字段的查询次数过多,可能会导致性能问题。为了减少这种查询,可以采取以下几种方法:
class MyModelAdmin(admin.TabularInline):
model = MyModel
extra = 1
def get_queryset(self, request):
return super().get_queryset(request).select_related('many_to_many_field')
class MyModelAdmin(admin.TabularInline):
model = MyModel
extra = 1
def get_queryset(self, request):
return super().get_queryset(request).prefetch_related('many_to_many_field')
from django.core.cache import cache
def get_many_to_many_objects():
objects = cache.get('many_to_many_objects')
if objects is None:
objects = ManyToManyModel.objects.all()
cache.set('many_to_many_objects', objects, 3600) # 缓存一小时
return objects
以上是减少Django ManyToMany TabularAdminInline中的Postgresql查询的一些方法。根据具体的业务需求和数据量大小,可以选择适合的方法来优化查询性能。
腾讯云相关产品和产品介绍链接地址:
领取专属 10元无门槛券
手把手带您无忧上云