ম্যানিরিলেটড ম্যানেজার অবজেক্টটি পুনরাবৃত্ত হয় না


96

এটি করার চেষ্টা করছেন:

আপডেট হয়েছে:

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

উভয় ক্ষেত্রই মনস্তাত্ত্বিক তাই কীভাবে এটি করা যায়?

উত্তর:


108

চেষ্টা করুন

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

এর শেষে বন্ধনী লক্ষ্য করুন WishList.attribute_answers.all()। প্রথম বন্ধন যুক্ত করে allফাংশনটি পুনরাবৃত্ত হতে পারে return

যদি আপনি প্রথম বন্ধনী অন্তর্ভুক্ত করেন তবে আপনি বলছেন "এতদিন আমাকে স্টোরের উত্তরগুলিতে সমস্ত মান দিন যতক্ষণ না মানটি ইচ্ছার তালিকাগুলির উত্তরগুলিতেও থাকে"। প্রথম বন্ধনী ব্যতীত আপনি স্টোরের উত্তরগুলি থেকে ফাংশনটিতে থাকা সমস্ত মান জিজ্ঞাসা করছেন allযা অর্থহীন। সমস্ত ফাংশন একটি পুনরাবৃত্তযোগ্য নয় (এটি এমন একটি ফাংশন যা পুনরাবৃত্তিযোগ্য ফেরত দেয়)



28

আপনি যদি কোনও টেমপ্লেটে এটি করছেন:

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

হালনাগাদ

আপনার যদি টেবিলের মাধ্যমে কোনও সারণি থাকে, আপনি সেই টেবিলের উপাদানগুলি (যেমন এখানে বিশদভাবে ) অ্যাক্সেস করতে পারেন (নোট, আপনি টেবিলের নামটি, ছোট হাতের অক্ষরে, প্রত্যয়যুক্ত _ সেট ব্যবহার করুন):

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

4
ধন্যবাদ এটি একটি সত্যিই পরিষ্কার পদ্ধতি
মল্টেনমফিনস

ধন্যবাদ, এটি সত্যিই সহায়ক ছিল
এমজিলন্ডন

28

টিএল; ডিআর

সবাই কে যেমন প্রশ্ন কোড পড়া খুঁজে বের করে জন্য টি এল; ডিআর

পরিবর্তে query_set.many_to_many

আপনার ব্যবহার করা উচিত query_set.many_to_many.all()


4
এটি গ্রহণযোগ্য উত্তর হওয়া উচিত ছিল, কোনও সহজ পেতে পারে না
মলিক ব্যাগওয়ালা

-1

এখানে প্রোফাইলগুলি মডেলগুলিতে busines_type বিদেশী_কি

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

-1

যখনই এই সমস্যাটি আসবে আমি এই প্রশ্নটিকে আঘাত করি। বিশেষত যখন একটি ফাংশনটিতে একটি বহুস্তুতের উপরে পুনরাবৃত্তি করার চেষ্টা করা হয়।

একটি টেম্পলেট হিসাবে আপনি এটি করতে পারেন:

array = many_to_many.all()
for x in many_to_many:
  function here
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.