জাজানো ম্যান্টিটোম্যান সম্পর্ক থেকে অবজেক্ট সরিয়ে ফেলছে


112

আসল অবজেক্টটি সরিয়ে না রেখে আমি কীভাবে বহু থেকে বহু সম্পর্ক থেকে কোনও বস্তু মুছব?

উদাহরণ:

আমি মডেল Moodsএবং Interest

Moodঅনেকগুলি থেকে বহু ক্ষেত্র রয়েছে interests(যা একটি models.ManyToManyField(Interest))।

আমি Moodsবলা একটি উদাহরণ তৈরি my_mood। ইন my_moodsএর স্বার্থ ক্ষেত্র আমি my_interest, অর্থ

>>> my_mood.interests.all()
[my_interest, ...]

আমি কিভাবে অপসারণ না my_interestথেকে my_moodপারেন মডেল উদাহরণস্বরূপ না মুছে? অন্য কথায়, সম্পর্কিত মডেলগুলিকে প্রভাবিত না করে আমি কীভাবে সম্পর্কটি সরিয়ে ফেলব?

উত্তর:


183
my_mood.interests.remove(my_interest)

জ্যাঙ্গোর সম্পর্ক ডক্স

দ্রষ্টব্য: আপনি এই কোডটি কার্যকর করার আগে জ্যাঙ্গোর ক্যোরিসেট এপিআইয়ের উদাহরণ my_moodএবং my_interestব্যবহার করতে হতে পারে।


3
AttributeError: 'RelatedManager' object has no attribute 'remove'
সেরিন 18

1
অন্য যোগ করতেentry my_mood.interests.add(my_interest)
জোহাব আলী

65

অন্তর্নিহিত অবজেক্টগুলিকে স্পর্শ না করে আপনার যদি সমস্ত এম 2 এম রেফারেন্স সরিয়ে ফেলতে হয় তবে অন্য দিক থেকে কাজ করা আরও সহজ:

interest.mood_set.clear()

যদিও এটি ওপি-র প্রশ্নের সরাসরি সমাধান করে না, এটি এই পরিস্থিতিতে প্রায়শই কার্যকর।


10
কেন এই নিম্নমানের ছিল? অনুমোদিত যে এটি ওপির প্রশ্নটিকে বিশেষভাবে সম্বোধন করে না, তবে আমি উত্তরটি রেখে দিয়েছি কারণ এটি এম 2 এম প্রসঙ্গে সম্পর্কগুলি সরিয়ে নিয়ে ঝাঁপিয়ে পড়া লোকদের জন্য বিশেষ আগ্রহের বিষয় এবং উদাহরণগুলির মধ্যে লুপের প্রয়োজনীয়তা সরিয়ে দেয়। আমি এটি একটি সহায়ক সম্পর্কিত পরামর্শ ছিল।
শেকার

2
এটি আমার পক্ষে কেবল কার্যকর ছিল (আমি প্রায় লুপ করতে যাচ্ছিলাম এবং চাইনি)। এটি পোস্ট করার জন্য ধন্যবাদ!
bwv549

1
আপনি যদি উপরের উত্তরে এই পয়েন্টটি যুক্ত করেন তবে এটি আরও ভাল হতে পারে
ব্রেইনলুপ

1
বা মডেলগুলিতে সম্পর্কিত নাম সহ এবংinterest.relatedname.clear()
জোশ

11

আপনার ক্ষেত্রে আপনি কেবল সম্পর্কটি সাফ করতে পারেন

my_mood.interests.clear()

তারপরে সম্ভবত আপনি যখন নিজের সিরিয়ালাইজারে আবার নতুন সম্পর্ক তৈরি করছেন আপনি এরকম কিছু করতে পারেন

interests = Interests.objects.get_or_create(name='Something')
my_mood_obj.tags.add(tag[0])
my_mood_obj.save()
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.