كيف يمكنني إنشاء مجموعة استعلام في Django لاسترداد المواضيع التي نشرها المستخدم؟
-
05-07-2019 - |
سؤال
أقوم بإنشاء تطبيق منتدى مترابطة باستخدام Django-mptt.كل شيء جاهز للعمل، ولكن لدي مشكلة في إنشاء مجموعة استعلام محددة.
أريد استرداد المشاركات التي:
1) هي العقد الجذرية
2) يتم نشرها بواسطة current_user أو لديك سليل تم نشره بواسطة current_user.
ما لدي حتى الآن هو هذا:
Post.objects.filter(Q(user = current_user) | Q( )).exclude(parent__gt = 0)
في سؤالي الثاني، أحتاج إلى شيء لأخبره عما إذا كان current_user قد نشر أحد أحفاده.هل يعرف أحد ما إذا كان ذلك ممكنًا؟
المحلول
لا أعتقد أنه يمكنك القيام بذلك في استعلام واحد.وإليك كيفية القيام بذلك في اثنين:
thread_ids = Post.objects.filter(user=current_user).values_list('tree_id', flat=True)
posts = Post.objects.filter(tree_id__in=thread_ids, level=0)
يؤدي هذا إلى الحصول على معرف شجرة MPTT لكل موضوع نشره المستخدم.ثم تحصل على العقدة الجذرية لكل من هذه المواضيع.
لا تنتمي إلى StackOverflow