お世話になります。
admin.pyにて、親モデルで、inlinesに子モデルを指定し、
管理画面で親子同時に追加・修正が行えるようにしています。
モデルの構造ですが、
親モデルが子モデルを持っており、
子モデルも別の外部キーで親モデルを持っています。
そのため、管理画面で修正ページなどを開こうとすると、
大量のSQLを発行されてしまいます。
SQLの最適化について調べたところ、
select_relatedやprefetch_relatedの指定を明示的に行うことで、
最適化できることは分かったのですが、
inlineのモデルに紐づく親モデルに対して、
どのように最適化を行えばいいのかわかりませんでした。
ご教示頂けますと幸いです。
宜しくお願いいたします。
python
1#models.py 2 3class Hoge(models.Model): 4 hoge_text = models.CharField('hoge', max_length=200, ) 5 6class HogeChild(models.Model): 7 hoge = models.ForeignKey(Hoge, verbose_name='hoge', on_delete=models.CASCADE, db_column='hoge_id', related_name='hoge',) 8 next_hoge = models.ForeignKey(Hoge, verbose_name='next_hoge', on_delete=models.CASCADE, db_column='next_hoge_id', related_name='next_hoge', null=True, blank=True, ) 9 hogechild_text = models.CharField('hoge_child', max_length=200, )
python
1#admin.py 2 3class HogeChildInline(admin.StackedInline): 4 form = HogeChildForm 5 model = models.HogeChild 6 extra = 0 7 fk_name = "hoge" 8 9 10class HogeAdmin(admin.ModelAdmin): 11 inlines = [HogeChildInline] 12 form = HogeForm 13 14 15admin.site.register(models.Hoge, HogeAdmin)
あなたの回答
tips
プレビュー