اذهب إلى المحتوى
  • 0

الفرق بين values و values_list في جانغو Django

Amer Abdallah

السؤال

في Django ، ما الفرق بين الإستعلامين التاليين:

Post.objects.values_list('comment_id', flat=True).distinct()

والإستعلام التالي:

Post.objects.values('comment_id').distinct()

هدفي هو الحصول على قائمة بمعرفات التعليقات IDs تحت كل مقالة. لقد قرأت توثيق جانغو Django، وفي الواقع استخدمت كلا الأسلوبين، ويبدو أن النتائج متشابهة بشكل كامل. ما هو الفرق بين إستخدام كلا الأسلوبين السابقين؟

رابط هذا التعليق
شارك على الشبكات الإجتماعية

Recommended Posts

  • 1

التابع values يقوم بإعادة QuerySet تحتوي على قواميس dictionaries، وتكون نتيجته كالتالي:

<QuerySet [{'comment_id': 1}, {'comment_id': 2}]>

بينما التابع values_list يقوم بإعادة كائن QuerySet يحتوي على tuples، وتكون نتيجته كالتالي:

<QuerySet [(1,), (2,)]>

إذا كنت تستخدم التابع values_list لإعادة حقل واحد فيمكنك أن تضع الخاصية flat بقيمة true لإعادة كائن QuerySet يحتوي على كل المعرفات في شكل قيمة واحدة بدلًا من tuple، كالتالي:

<QuerySet [1, 2]>

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0

values تقوم باعادة QuerySet  والتى تقوم باعادة مجموعة من القواميس dictionaries.

values_list تقوم باعادة QuerySet والتى تقوم بارجاع tubles 

المثال التالي يوضح الفرق بين الطريقيتين:

>>> list(Article.objects.values_list('id', flat=True)) # flat=True تقوم بتحويل ال tubles الى list  
[1, 2, 3, 4, 5, 6]

>>> list(Article.objects.values('id'))
[{'id':1}, {'id':2}, {'id':3}, {'id':4}, {'id':5}, {'id':6}]

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...