سؤال

        for u in Users.objects.all():

            for g in u.group.all():
                if g not in Groups.objects.filter(domain__user=u.id):
                   u.group.filter(id=g.id).delete()

وكيف يمكنني حذف الإدخالات في الجدول العلاقة. في هذه الحالة لدي الكثير لكثير من العلاقة بين المجموعات والمستخدمين. البيان حذف في رمز أعلاه حذف مجموعة من جدول المجموعات. أريد فقط أن حذف العلاقة بين المستخدم ومجموعة من الجدول Users_group. كيف أفعل ذلك.

والشكر

هل كانت مفيدة؟

المحلول

ومفتاح التفكير في هذه المشكلة هو أن ندرك أن u.group هو مدير، تماما كما Groups.objects هو مدير (افتراضيا السابق هو فئة فرعية من هذه الأخيرة). ومعظم العمليات التي ندعو u.group يؤثر على طاولة المجموعة بالكامل (مع احتمال ان يكون مرشحات أول ما نزل على الكائنات المتعلقة ش). وهذا يعني أنه، على افتراض ز يرتبط ش،

u.group.filter(id=g.id).delete()

ويجب أن تعمل نفس

Groups.objects.filter(id=g.id).delete()

في كلتا الحالتين، .filter () بإرجاع مجموعة طلبات البحث (ساذج تماما فيما يتعلق ش) و.delete () حذف جميع الأعضاء.

والخبر السار هو أن u.group ينبغي أن يكون ManyRelatedManager، وهذا يعني أنه لن يكون هناك طرق إضافية متوفرة لذلك. بالنسبة للعديد من الأمثلة، تحقق هنا . واحد التي يجب أن تتناسب مع السيناريو الخاص بك:

u.group.remove(g)
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top