私は単純なキャッシングトリックが実際に役に立つかどうかを判断しようとしています。私はDjangoクエリーセットが効率を改善するために怠惰だと知っていますが、データが呼び出された後にクエリの結果を保存するかどうかは疑問です。例えばdjangoクエリは、呼び出し後に結果を保存しますか?
、私は2つのモデルがある場合:
class Klass1(models.Model):
k2 = models.ForeignKey('Klass2')
class Klass2(models.Model):
# Model Code ...
@property
def klasses(self):
self.klasses = Klass1.objects.filter(k2=self)
return self.klasses
をそして、私はどこかklass_2_instance.klasses[:]
を呼び出して、データベースにアクセスし、クエリを返しています。 klass_2_instance.klasses
をもう一度呼び出すと、データベースに2回目のアクセスが行われるのだろうか、またはdjangoクエリが最初の呼び出しの結果を保存するかどうかは疑問です。
'class 'ではなく' klass'が恐ろしいと言われましたか? 'cls'は、' class'がエラーを引き起こす文脈で名前が使われるなら、IMOに行く方法です。 – ThiefMaster
心配する必要はありません。ここではklassを任意の名前として使用しました。これは私が使用している実際のモデルではなく、単なるコード例です。 – Arion