السلام عليكم , النهارده هنتكلم عن بعض النصائح الهامه اللي لازم تأخذ في الاعتبار وقت تصميم Model في دجانجو لانك بعدكده هتحتاجها جدا

1 – ال verbose_names :

واحده من اهم ال options اللي لازم تضيفها لكل model عندك , بستخدمها علشان اغير اسم ال field اللي هيظهر علي الموقع سواء كان ال admin او الموقع نفسه , اي filed عندي في ال model بيظهر ب الاسم اللي انته استخدمته في ال model وعلشان اغيره بستخدمها , بستخدمها كمان علشان اتحكم في الترجمه بمعني اني لو عاوز اضيف اكتر من لغه للموقع لازم استخدم ال verbose_names

في اي field عندي default بتاع اول parameter او option ليه بيكون ال verbose_name بمعني ان اول قيمه ممكن اكتبها علي طول من غير م اكتب انها verbose_name زي المثال ده

full_name = models.CharField('full name', max_length=100)
full_name = models.CharField(verbose_name='full name', max_length=100)
	

الاثنين بيظهروا نفس النتيجه


2 – في الترتيب اللي موجود في ال documentation الخاصه بدجانجو

ترتيب ال models مهم برضوا بمعني ان لو عندي complex model يعني فيه اكثر من حاجه هيبقي الترتيب الافضل ليه زي كده :

1 – ال choices

2 – ال database fields ودي ال fields العاديه بتاعتي

3 – الattributes custom manager وده اللي انا بكتبه علشان اضيف ال methods اللي انا عاوزها لل queryset بتاع دجانجو

4 – ال meta ودي عباره عن class بتضيف بعض الخصائص علي ال model بتاعي زي التحكم في اسم ال model في ال admin و الترتيب بتاع ال model بالاضافه ل index وهنتكلم عنها بعد شويه

5 – ال __str__ ودي عباره عن function داله بتتحكم في ظهور ال list view بمعني ان لما اعرض كل ال items هتظهر ب ايه !! اسمها ولا التاريخ اللي اضافت فيه ولا ايه , وطبعا الداله دي بترجع ب field موجود عندي ف ال model

6 – ال save method ودي ال method اللي انا بغير فيها ال save بتاع دجانجو بمعني اني لو عاوز انفذ حاجه معيينه قبل م اعمل save لل model ف بعمل override للداله اللي اسمها save واضيف اللي انا عاوزه بستخدمها مثلا لو انا بضيف slug مثلا

7 – ال get_absolute_url ودي عباره عن داله بترجع ب ال url بتاع ال model الحالي بستخدمها في ال templates بتاع دجانجو في ال url علشان لما اضغط علي اللينك ده يفتحلي الصفحه الخاصه ب ال model ده

8 – اخر حاجه بتكون ال custom methods ودي دوال بضيفلي مميزات لل models بتاعتي او بضيف logic

يعتبر ده الترتيب اللي ال django developers نصحوا بيه ف تصميم ال models


3 – كيفيه استخدم ال null و ال blank و ايه الفرق بينهم !!

الاثنين شبه بعض جدا وتقريبا بيعملوا نفس الحاجه لكن ف اختلاف بسيط بينهم ال null = database related بمعني ان اي field هعطيله ال option انه يقبل null يبقي العمود ده في الداتا بيز عادي يبقي فاضي لو انا بضيف مش لازم يبقي ليه معلومه ولكن ال blank = validation related بمعني ان اي field بعطيله ال option ده لو بضيفله قيمه من form هقبلها لكن لو ال blank=False يبقي القيمه دي required للفورم بتاعتي وكده ال form مش هتعمل save غير لما تكتب قيمه حتي لو كانت الداتا بيز للعمود ده تقبل null


4 – ال related name :

لما بنعمل relation بين اثنين model لازم نستخدم ال related name ونوضح الاسم الخاص ب ال relation لانه مهم جدا بعد كده لما تحاول تعمل كده لما query بين الاثنين model اللي بينهم ال relation


5 – استخدم db_index :

ال index بيستخدم لتسريع ال query اللي بتنفذ علي االداتابيز الفكره انك بتختار column او اكتر من column تعمل عليهم index ال columns دي انته بتختارها علي اساس انك بتستخدمها كتيير لما تكتب query علي الداتا بيز الفكره ان ال columns دي لما بطبق عليها ال index بتبقي اسرع بكتيير من غيره , الفكره انك تتعلم ازاي تضيفه وتعرف ال fields اللي انته هتستخدمها كتيير ف ال query واللي هتكون مثلا زي created_at بمعني ان تاريخ اضافه قيمه من اكتر الحاجات اللي ممكن تستخدمها ف ال filter ف يبقي ده column اقدر اطبق عليه index واسرع ال query الخاصه بيه

هيبقي ف مقال بالتفصيل عن ال index وكيفيه التعامل معاه بالاضافه عن كيفيه انك تضيفه ع داتابيز فيها قيم حالياً


بالتوفيق وياريت تشاركني رايك في الكومنتات

#محمود_احمد