Django admin で [プレゼンテーションの追加] に移動しようとすると、応答がレンダリングされるまで 1 分ほど待たなければなりません。問題は、データベースに約 500 枚のスライドがあり、管理者がメニューに入力するためにすべてのスライドを 3 回選択していることです。この量のデータがサーバーをひざまずかせるとは思わないので、明らかにモデル定義に何か問題があります。関係を定義した方法、またはdjango管理者を使用している方法でこの問題が発生している理由についての可視性はありますか?
class PresentationTitle(models.Model):
title = models.CharField(max_length=255)
order_number = models.IntegerField(default=0)
def __unicode__(self):
return self.title
class PresentationUser(models.Model):
user = models.OneToOneField(User)
authorized_modules = models.ManyToManyField(PresentationTitle)
class Presentation(models.Model):
title = models.ForeignKey(PresentationTitle)
user = models.ForeignKey(PresentationUser)
presentation_date = models.DateTimeField()
def __unicode__(self):
return self.title.title
class Slide(models.Model):
....
submodule = models.ForeignKey(Submodule)
presentation = models.ManyToManyField(Presentation, through='PresentationSlide')
...
class Meta:
order_with_respect_to = 'submodule'
ordering = ['order']
class PresentationSlide(models.Model):
presentation = models.ForeignKey(Presentation)
slide = models.ForeignKey(Slide)
slide_order = models.IntegerField()
さらに、管理者には以下が含まれます。
class PresentationSlideInline(admin.StackedInline):
model = PresentationSlide
class PresentationAdmin(admin.ModelAdmin):
inlines = [PresentationSlideInline]
admin.site.register(Presentation, PresentationAdmin)
当然のことながら、PresentationAdmin を から削除すると、admin.site.register
非常に応答性が高くなります。