كيف يمكنني إنشاء مجموعة استعلام في Django لاسترداد المواضيع التي نشرها المستخدم؟

StackOverflow https://stackoverflow.com/questions/1409800

  •  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 لكل موضوع نشره المستخدم.ثم تحصل على العقدة الجذرية لكل من هذه المواضيع.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top