[django] ManyRelatedManager 개체는 반복 할 수 없습니다.

이렇게하려고 :

업데이트 :

wishList = WishList.objects.get(pk=20)
matches = [val for val in Store.attribute_answers.all() if val in wishList.attribute_answers]

그리고 이것을 …

'ManyRelatedManager' object is not iterable

두 필드가 모두 많으므로 어떻게 할 수 있습니까?



답변

시험

matches = [val for val in Store.attribute_answers.all() if val in WishList.attribute_answers.all()]

끝에 괄호가 WishList.attribute_answers.all()있습니다. 괄호를 추가하면 all이터 러블을 반환하는 함수가 호출 됩니다.

괄호를 포함하면 “그 값이 위시리스트 답변에도있는 한 상점 답변의 모든 값을주세요”라고 말하는 것입니다. 괄호가 없으면 all함수 에도있는 상점의 답변에서 모든 값을 요청 하는 것입니다. 이는 의미가 없습니다. all 함수는 이터 러블이 아닙니다 (이터 러블을 반환하는 함수입니다).


답변

당신이 뭔가를 찾고있는 것 같습니다 Store.attribute_answers.all()


답변

템플릿에서이 작업을 수행하는 경우 :

{% for room in study.room_choice.all %}
  {{ room }}
  {% empty %}
  empty list!
{% endfor %}

최신 정보

관통 테이블이있는 경우 다음과 같이 해당 테이블의 요소에 액세스 할 수 있습니다 ( 여기에 자세히 설명 되어 있음).

{% for roominfo in participant.roomchoicethru_set.all %}
  {{ roominfo.room}} {{ roominfo.telnumber}}
{% endfor %}


답변

TL; DR

질문에서 읽기 코드를 TL; DR 로 찾는 모든 사람

대신에 query_set.many_to_many

당신은 사용해야합니다
query_set.many_to_many.all()


답변

여기서 busines_type은 프로필 모델의 foreign_key입니다.

pro = Profile.object.filter(user=myuser).first()
business_type = pro.business_type.all()
if business_type:
    b_type = ''
    for b in business_type:
        b_type += str(b.type)+' '
        a = b_type


답변

이 문제가 발생할 때마다이 질문을 계속합니다. 특히 함수의 많은 부분을 실제로 반복하려고 할 때.

템플릿으로 다음을 수행 할 수 있습니다.

array = many_to_many.all()
for x in many_to_many:
  function here


답변