ডিজেঙ্গো টেম্পলেটে সম্পর্কিত আইটেমগুলির একটি সেটকে বাছাই করা সম্ভব?
এটি: এই কোড (এইচটিএমএল ট্যাগ সহ স্পষ্টতার জন্য বাদ দেওয়া):
{% for event in eventsCollection %}
{{ event.location }}
{% for attendee in event.attendee_set.all %}
{{ attendee.first_name }} {{ attendee.last_name }}
{% endfor %}
{% endfor %}
প্রদর্শন ঠিক প্রায় আমি চাই চাই। কেবলমাত্র আমি পরিবর্তন করতে চাই আমি হ'ল নাম অনুসারে বাছাই করা উপস্থিতদের তালিকা। আমি এরকম কিছু বলার চেষ্টা করেছি:
{% for event in events %}
{{ event.location }}
{% for attendee in event.attendee_set.order_by__last_name %}
{{ attendee.first_name }} {{ attendee.last_name }}
{% endfor %}
{% endfor %}
হায়, উপরের সিনট্যাক্সটি কাজ করে না (এটি একটি খালি তালিকা তৈরি করে) এবং আমি অন্য কোনও প্রকরণের কথাও ভাবি না (সিনট্যাক্স ত্রুটিগুলির অনেকগুলি রিপোর্ট করা হয়েছে, তবে আনন্দ নেই)।
আমি অবশ্যই আমার দৃষ্টিতে এক প্রকারের সাজানো অংশগ্রহণকারী তালিকার অ্যারে তৈরি করতে পারি, তবে এটি একটি কুৎসিত এবং ভঙ্গুর (এবং আমি কী কুৎসিত উল্লেখ করেছি)।
বলা বাহুল্য, তবে আমি এটি যাইহোকই বলব, আমি অন-লাইন ডকগুলি অনুভব করেছি এবং স্ট্যাক ওভারফ্লো এবং জ্যাঙ্গো-ব্যবহারকারীর সংরক্ষণাগারগুলি কোনও সহায়ক না পেয়ে অনুসন্ধান করেছি (আহা, যদি কেবল একটি কোয়েরি সেট থাকে তবে অভিধান ডিক্টসোর্ট করত) কাজ, কিন্তু এটি নয় এবং এটিও নয়)
===============================================
তওমাসের উত্তর গ্রহণের পরে অতিরিক্ত চিন্তা যুক্ত করার জন্য সম্পাদিত।
তওমাস যেমনটি আমি উপস্থাপন করলাম ঠিক তেমন বিষয়টিই সম্বোধন করেছে - যদিও সমাধানটি আমার প্রত্যাশা ছিল না। ফলস্বরূপ আমি একটি দরকারী কৌশল শিখেছি যা অন্যান্য পরিস্থিতিতেও ব্যবহার করা যেতে পারে।
টমের উত্তরে এমন একটি পদ্ধতির প্রস্তাব দেওয়া হয়েছিল যা আমি ইতিমধ্যে আমার ওপিতে উল্লেখ করেছি এবং অস্থায়ীভাবে "কুশ্রী" বলে প্রত্যাখ্যান করেছি।
"কুরুচিপূর্ণ" একটি অন্ত্রের প্রতিক্রিয়া ছিল এবং আমি এতে কী ভুল ছিল তা পরিষ্কার করতে চেয়েছিলাম। এটি করার সময় আমি বুঝতে পেরেছিলাম যে এটি একটি কুশ্রী পদ্ধতির কারণ হ'ল কারণ যে টেমপ্লেটটি রেন্ডার করার জন্য সেট করে একটি কোয়েরি পাস করার আইডিয়াটিতে আমাকে ঝুলিয়ে রাখা হয়েছিল। আমি যদি সেই প্রয়োজনটি শিথিল করি তবে একটি অশুভ পদ্ধতির কাজ করা উচিত।
আমি এখনো এই চেষ্টা করেছি, কিন্তু যে অনুমান বরং queryset ক্ষণস্থায়ী চেয়ে দৃশ্য কোড ক্যোয়ারিতে একটি তালিকা ইভেন্টগুলি, তারপর সংশ্লিষ্ট অংশগ্রহণকারীদের, যার জন্য কোয়েরি সেট দিয়ে প্রতিটি ইভেন্টের সজ্জিত উত্পাদক সেটকে iterated ছিল সাজানো (অথবা ফিল্টার, বা যাই হোক না কেন) কাঙ্ক্ষিত উপায়ে। এরকম কিছু:
eventCollection = []
events = Event.object.[filtered and sorted to taste]
for event in events:
event.attendee_list = event.attendee_set.[filtered and sorted to taste]
eventCollection.append(event)
এখন টেমপ্লেটটি হয়ে যায়:
{% for event in events %}
{{ event.location }}
{% for attendee in event.attendee_list %}
{{ attendee.first_name }} {{ attendee.last_name }}
{% endfor %}
{% endfor %}
নেতিবাচক দিকটি হল ভিউটিকে একবারে সমস্ত ইভেন্টকে "সত্যায়িত" করতে হবে যা বিপুল সংখ্যক ইভেন্ট থাকলে সমস্যা হতে পারে। অবশ্যই একটি পৃষ্ঠাবদ্ধকরণ যোগ করতে পারে, কিন্তু এটি দর্শনটি যথেষ্ট জটিল করে তোলে।
উল্টোটি হল "প্রদর্শিত তথ্য উপাত্ত প্রস্তুত করুন" কোডটি সেই ভিউতে রয়েছে যেখানে এটি প্রদর্শিত হয় যাতে প্রদর্শনের জন্য ভিউ দ্বারা সরবরাহিত ডেটা ফর্ম্যাট করার ক্ষেত্রে টেমপ্লেটটিকে ফোকাস করতে দেয়। এটি সঠিক এবং যথাযথ।
তাই আমার পরিকল্পনাটি বড় টেবিলগুলির জন্য তওমাসের কৌশল এবং ছোট টেবিলগুলির জন্য উপরের কৌশলটি ব্যবহার করতে হবে, পাঠকের কাছে বড় এবং ছোট বামের সংজ্ঞা সহ (গ্রিন))