1

要件は、評価された QuerySet のメンバーに文字列属性 (この場合は ) でアクセスできることnameです。もっと効率的な方法があるように見えるので、QuerySet をループするという考えは好きではありません。

次のようなものを呼び出した後:

my_objects = MyObject.objects.all()

そして、私はそれを次のようなもので評価します:

len(my_objects)

この場合、評価された QuerySet から名前で特定の結果を取得する最良の方法は何my_objectsですか? 理想的には、のようなものを見たいですmy_objects.filter(foo='bar')

プロセスの過程で、評価された QuerySet のすべての結果が必要になることに注意してください。

4

2 に答える 2

2

クエリセットのフィールド値に基づいてオブジェクトを取得する直接的な方法はありません。ただし、できることの 1 つは、クエリセットから辞書を作成し、nameキーとして設定することです (一意である必要があります)。

my_objects = MyObject.objects.all()
obj_dict = {obj.name: obj for obj in my_objects}
print obj_dict['any_name']

参考:テーブルから単一のオブジェクトを取得するだけの場合は、.getメソッドを使用できます。

obj = MyObject.objects.get(pk=id)
or
obj = MyObject.objects.get(name='unique_name')
于 2013-01-04T16:12:59.130 に答える