একটি আরও ভাল জ্যাঙ্গো অ্যাডমিন মিন্টো টোমনি ফিল্ড উইজেট


101

আমি জ্যাঙ্গো অ্যাডমিনের ডিফল্ট models.ManyToManyFieldউইজেটটি ব্যবহার করা জটিল বলে মনে করি। এটি এইচটিএমএল নির্বাচনের উপাদান এবং যদি আপনার কাছে "অন্যান্য" মডেলের অনেকগুলি অবজেক্ট থাকে তবে আপনি "এই" অবজেক্টটির সাথে সংযুক্ত করতে চান এমন "অন্যান্য" অবজেক্টগুলি আসলে পাওয়া বেশ অবাস্তব। এবং যদি আপনার "অন্যান্য" মডেলটির প্রচুর অবজেক্ট থাকে তবে এটি অ্যাডমিন পৃষ্ঠাটির উপস্থাপনাটি এমনকি ধীর করে দেবে বলে মনে হয়।

আমি সচেতন যে আমি আমার নিজস্ব কাস্টম অ্যাডমিন উইজেটটি তৈরি করতে পারি এবং যথোপযুক্ত ManyToManyFieldsহিসাবে এটি আমার প্রয়োগ করতে পারি , তবে সেখানে কি পূর্ব-বিল্টগুলি আছে যা আমি পরিবর্তে ব্যবহার করতে পারি? আমার স্বপ্নগুলিতে, আমি একটি স্বয়ংক্রিয়ভাবে সমাপ্ত পাঠ্য ইনপুট এইচটিএমএল উইজেট চিত্রিত করি। জ্যাঙ্গো অ্যাডমিন কাঠামোতে কি এটি কি ব্যবহারিক / সম্ভব?

ধন্যবাদ।

উত্তর:


160

filter_horizontalআপনার অ্যাডমিন ক্লাসে বৈশিষ্ট্যটি ব্যবহার করে দেখুন , উদাহরণস্বরূপ:

class SomeModelAdmin(admin.ModelAdmin):
    filter_horizontal = ('users',)

ডকুমেন্টেশনে যেমন উল্লেখ করা হয়েছে , "এই তালিকায় একটি ম্যান্টি টোম্যানিফিল্ড যুক্ত করার পরিবর্তে একটি নিফ্টি অবিচ্ছিন্ন জাভাস্ক্রিপ্ট" ফিল্টার "ইন্টারফেস ব্যবহার করা হবে যা বিকল্পগুলির মধ্যে অনুসন্ধানের অনুমতি দেয়"। filter_verticalকিছুটা ভিন্ন লেআউট দিয়ে একই জিনিস করে।


দুর্দান্ত! এটি ঠিক যা খুঁজছে তার মতো মনে হচ্ছে, আমি এটি দিয়ে চেষ্টা করব a
ক্রিস ডাব্লু।

এটি কাজ করছে তবে কীভাবে এই দায়ের করা যায় তা কেবল পঠনযোগ্য। আমি কেবল_ফিল্ড = ('ব্যবহারকারী',) পড়ার চেষ্টা করছি। তবে এটি কমা দ্বারা পৃথক একক লাইনে দেখানো হয়েছে। আমি লাইন বিরতিতে দেখাতে চাই ...
বর্ণন কে

আমি চিন্তিত ছিলাম আমাকে নিজের উইজেটটি লিখতে হবে, তবে এটি নিখুঁত! তার জন্য ধন্যবাদ! ; পি
umat

7

আপনি প্রশাসকের কোনও কাঁচা আইডি ব্যবহার করে দেখতে পারেন try এবং জ্যাঙ্গো ডক্স: http://docs.djangoproject.com/en/dev/ref/contrib/admin/#django.contrib.admin.ModelAdmin.raw_id_fields

আপনি যদি স্বয়ংক্রিয় সম্পূর্ণরূপে কোনও কিছুর সন্ধান করছেন তবে আপনি এটিকে একটি সূচনা পয়েন্ট হিসাবে দেখতে চাইবেন http://code.djangoproject.com/wiki/AutoCompleteSolutions

এবং অবশেষে একটি খুব সরল ইনলাইন উদাহরণ:

মডেল.পি

class SomeModel(models.Model):
    users = models.ManyToMany(User)

প্রশাসক.পি:

class SomeModelAdmin(admin.ModelAdmin):
    raw_id_fields = ("users",)

3

আমি এটির সাথে আসলে খেলিনি তবে এই আশাব্যঞ্জক চেহারা গ্রন্থাগারটি অন্য কোথাও উল্লেখ করেছি d

এটি আমি যা চেয়েছিলাম ঠিক তেমনভাবে প্রদর্শিত হচ্ছে। সম্পর্কিত অবজেক্টের পুরো তালিকাটি লোড করার পরিবর্তে (সেখানে যতগুলিই থাকুক না কেন!) এবং কয়েকটি বেছে নেওয়ার জন্য আপনাকে একটি পিকারের সাথে উপস্থাপন করার পরিবর্তে filter_horizontalএটি একটি অনুসন্ধান / ফিল্টার বাক্স উপস্থাপন করে এবং ফলাফলগুলি পুনরুদ্ধার করতে টাইপহেড / স্বতঃসিদ্ধ কলগুলি ব্যবহার করে গতিশীলভাবে এটি আপনার ক্ষেত্রে 5000 টি ব্যবহারকারী এবং এটি 5k <option>উপাদানগুলি ডাউনলোড এবং রেন্ডার করার জন্য অপেক্ষা না করে তাদের 3 বা 4 বাছাই করতে চান এমন ক্ষেত্রে এটি দুর্দান্ত ।


0

এটি একটি পুরানো প্রশ্ন, তবে আমি এখানে এমন লোকদের জন্য উত্তর যুক্ত করতে চাই যারা আমার মতো করে এটি খুঁজে পায়: এই পরিস্থিতিটি ঠিক জাঙ্গো ইনলাইন প্রশাসকদের জন্য। বিশেষত, আমি অনেকগুলি থেকে বহু সম্পর্কের জন্য কাঁচা আইডি ক্ষেত্রের সাথে ট্যাবুলারআইনলাইনগুলি ব্যবহার করি যার অনেক পছন্দ রয়েছে।

https://docs.djangoproject.com/en/2.1/ref/contrib/admin/#django.contrib.admin.TabularInline

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.