Django の学習に役立つアプリを作成しています...基本的には、所有しているさまざまなメディア (CD、DVD、本、デバイスなど) のリストにすぎません。もちろん、それはまったく役に立ちませんが、「現実世界」のアプリで見つけられる可能性のあるすべてのものを見つけようとしています.
私がやりたいことは、各カテゴリからいくつかの項目を選択するメイン リスト ビューを用意することです。5 枚の CD、5 冊の本などを 1 つのリストにまとめます。
最初に頭に浮かぶのは、それらすべてをクエリして、コンテキストを介して渡すことです。
{"本": Book.objects.all(), "DVD": DVD.objects.all(), #etc etc, }
しかし、これではまったく効率が悪いと思わざるを得ません。DBにそれほど大きな打撃を与えない、より良い/より高速な方法はありますか? おそらく、他のモデルをポーリングしてリストを生成する「スーパー」モデルを作成する素晴らしい方法でしょうか? か何か?
それとも、とにかく Django はこのリクエストをキャッシュしますか?そのため、ページがリクエストされるたびに DB にヒットすることはありませんか?
継承の使用についてはどうですか?
class Item(models.Model):
name = models.CharField(max_length=200)
date_added = models.blahblahblah
class Meta:
abstract = True
class DVD(Item):
run_time = models.IntegerField()
director = models.blahblah
class Book(Item):
publisher = etc
author = etc