Amer Abdallah نشر 12 سبتمبر 2021 أرسل تقرير نشر 12 سبتمبر 2021 عند كتابة استعلامات في جانغو Django، يمكنني أن استخدام أي من id أو pk كمعلمات استعلام، كالتالي. Model.objects.get(id=1) Model.objects.get(pk=1) أعلم أن pk تعني المفتاح الأساسي وهو اختصار لـ primary key، ,ولكن ليس من الواضح متى يجب استخدام id ومتى أستخدم pk؟ 2 اقتباس
1 سامح أشرف نشر 12 سبتمبر 2021 أرسل تقرير نشر 12 سبتمبر 2021 في الحقيقة لا يهم أي منهما تستخدم فسوف تحصل على نفس النتيجة في النهاية. ولكن pk عام أكثر ، لأنك لن تضطر لمعرفة اسم المفتاح الأساسي primary key في الجدول، أي أنك لست بحاجة إلى الاهتمام بما إذا كان حقل المفتاح الأساسي يسمى id أو user_id .. إلخ. كما أنه يوفر مزيدًا من التناسق إذا كان لديك نماذج ذات حقول مفاتيح أساسية مختلفة، حيث سوف تستخدم نفس الصيغة في كتابة الإستعلامات، ولن تضطر لتذكر المفتاح الأساسي لكل نموذج model. لذلك يفضل أن تستخدم pk بدلًا من id في الحالات العامة. لاحظ أيضًا أن id يعد دالة built-in في بايثون، وقد يكون هذا سبب في ظهور خطأ، إن قمت بخلط أسماء المتغيرات والدوال معًا. على الجانب الآخر، قد يكون إستخدام id أسرع من إستخدام pk، وذلك لأن جانغو Django يستغرق وقت في معرفة اسم الحقل الرئيسي عندما تستعمل pk، بينما إن إستعملت id فأنت تستعمل اسم الحقل مباشرة، ولن يضطر جانغو Django إلى معرفة اسم الحقل لأنك أخبرته به بالفعل. 3 اقتباس
0 Ahmed Sharshar نشر 12 سبتمبر 2021 أرسل تقرير نشر 12 سبتمبر 2021 ببساطة pk هي المميز الخاص بالبيانات عن id ، لكن بوجة عام لا فرق كبير بينهما، لكن يفضل استخدام id عن pk حيث انها أسرع بحوالي 7 مرات، أنظر المثال التالي: %timeit obj.id 46 ns ± 0.187 ns per loop (mean ± std. dev. of 7 runs, 10000000 loops each) %timeit obj.pk 347 ns ± 11.3 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each) لكن لو استخدمت pk فهي تجلب لك العناصر المميزة دون أن يكون اسمها id ام لا، وهذا ما يجعله أبطأ في الاستخدام. 1 اقتباس
السؤال
Amer Abdallah
عند كتابة استعلامات في جانغو Django، يمكنني أن استخدام أي من id أو pk كمعلمات استعلام، كالتالي.
أعلم أن pk تعني المفتاح الأساسي وهو اختصار لـ primary key، ,ولكن ليس من الواضح متى يجب استخدام id ومتى أستخدم pk؟
2 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.