に多くの複数のオブジェクトを選択します。次のモデルがありますが、多くの
class Schema(models.Model):
keys = models.ManyToManyField(Key, through='SchemaHasKey')
# ...
class Key(models.Model):
name = models.CharField(max_length=50)
# ...
は私がキーと10の最初のスキーマを選択する必要がありますが、私のやり方が悪いです:
schemas = []
for schema in Schema.objects.all().order_by('pk')[:10]:
schema.key = schema.keys.all()
schemas.append(schema)
は.select_relatedは()ではありませんうまくいく:
schemas = Schema.objects.select_related().order_by('pk')[:10]
これは特定の数のSQLクエリで実行できますか?
".append(key_through.key)"にする必要はありませんか?また、スキーマにキーがない場合に、 "key_map [schema.id]"をラップする必要はありませんか? –
@ダン、良い目!一定。 –
もう1つのこと - 私の設定(django 1.1)では、スルースルーはマネージャからではなくdbから引き出されたオブジェクトにのみ設定されているようです。 defaultdictでの改善 –