[Django]’ManyRelatedManager’ object does not support indexing

Edit

[Django]’ManyRelatedManager’ object does not support indexing

상황 : orderManytoMany 관계인 product들을 모조리 불러들이고 싶음.

# terminal
TypeError: 'ManyRelatedManager' object does not support indexing

Django에서 ManytoMany 관계를 사용 시 iterable하게 사용하고 싶을 때가 있다. 하지만 안타깝게도 Django의 ManytoMany는 이러한 기능을 지원하지 않는다.

따라서 관련된 objects들을 가져오기 위해서는 all()을 사용하면 된다.

Order.product.all()

이러한 이유는 Django의 ManytoManyField()가 실제 Field가 아니라 단순 Manager() 역할을 하기 때문이다.

%23%23%23%20%5BDjango%5D%27ManyRelatedManager%27%20object%20does%20not%20support%20indexing%0A@%28Postach.io%29%5Bdjango%7Cerror%7Cpublished%5D%0A%0A%3E**%uC0C1%uD669%20%3A%20**%20%60order%60%20%uC640%20%60ManytoMany%60%20%uAD00%uACC4%uC778%20%60product%60%uB4E4%uC744%20%uBAA8%uC870%uB9AC%20%uBD88%uB7EC%uB4E4%uC774%uACE0%20%uC2F6%uC74C.%0A%0A%60%60%60bash%0A%23%20terminal%0ATypeError%3A%20%27ManyRelatedManager%27%20object%20does%20not%20support%20indexing%0A%60%60%60%0A%0ADjango%uC5D0%uC11C%20%60ManytoMany%60%20%uAD00%uACC4%uB97C%20%uC0AC%uC6A9%20%uC2DC%20iterable%uD558%uAC8C%20%uC0AC%uC6A9%uD558%uACE0%20%uC2F6%uC744%20%uB54C%uAC00%20%uC788%uB2E4.%20%uD558%uC9C0%uB9CC%20%uC548%uD0C0%uAE5D%uAC8C%uB3C4%20Django%uC758%20%60ManytoMany%60%uB294%20%uC774%uB7EC%uD55C%20%uAE30%uB2A5%uC744%20%uC9C0%uC6D0%uD558%uC9C0%20%uC54A%uB294%uB2E4.%20%0A%0A%uB530%uB77C%uC11C%20%uAD00%uB828%uB41C%20objects%uB4E4%uC744%20%uAC00%uC838%uC624%uAE30%20%uC704%uD574%uC11C%uB294%20%60all%28%29%60%uC744%20%uC0AC%uC6A9%uD558%uBA74%20%uB41C%uB2E4.%20%0A%0A%60%60%60python%0AOrder.product.all%28%29%0A%60%60%60%0A%0A%uC774%uB7EC%uD55C%20%uC774%uC720%uB294%20Django%uC758%20%60ManytoManyField%28%29%60%uAC00%20%uC2E4%uC81C%20Field%uAC00%20%uC544%uB2C8%uB77C%20%uB2E8%uC21C%20Manager%28%29%20%uC5ED%uD560%uC744%20%uD558%uAE30%20%uB54C%uBB38%uC774%uB2E4.%20