التعامل مع قواعد البيانات- متقدم ( الدرس الاخير)
بسم الله الرحمن الرحيم
السلام عليكم ورحمة الله وبركاته
اليوم هو الدرس الاخير من اساسيات جانغو
وهذا الدرس سيكون بالكامل للتعامل مع قواعد البيانات وفهم كيفية بناء الجداول
كنت افكر في كتابة الدرس يدوياً لكن قررت ان اقوم بكتابة امثله من موقع كتب جانغو يشرح هذا المفهوم
انقله بطريقتي الخاصة وسيكون الدرس هو الاخير وباذن الله سيشرح كامل مفاهيم قواعد البيانات والعلاقات بينها relationship
سنقوم بانشاء ثلاثة جداول وسيكون بين الجداول علاقة
كما تعلمنا سابقا ان اي تعامل مع قواعد البيانات سيكون بداخل ملف models.py
from django.db import models
class Publisher(models.Model):
name = models.CharField(max_length=30)
address = models.CharField(max_length=50)
city = models.CharField(max_length=60)
state_province = models.CharField(max_length=30)
country = models.CharField(max_length=50)
website = models.URLField()
def __str__(self):
return self.name
class Author(models.Model):
first_name = models.CharField(max_length=30)
last_name = models.CharField(max_length=40)
email = models.EmailField()
def __str__(self):
return '%s %s' % (self.first_name, self.last_name)
class Book(models.Model):
title = models.CharField(max_length=100)
authors = models.ManyToManyField(Author)
publisher = models.ForeignKey(Publisher)
publication_date = models.DateField()
def __str__(self):
return self.title
الجدول الاول Publisher بيانات ناشر المحتوى او الكتاب
وبداخلة عدة حقول
name اسم الشخص الناشر عباره عن character حرف والحد الاعلى للحروف 30
address عنوان الناش وهو نفس الحقل السابق حروف
city المدينة
state_province الولاية او الحي
country البلد
website رابط الموقع للناشر
من ثم دالة str وهي تعيد لنا قيمة للكلاس او الفئة دائما ماتعيد اسم الناشر
هذا الجدول الاول والحقول بداخله كما وضحناها سابقا وبامكانك اضافة حقول اخرى حسب ماتحتاج ولكن نكتفي بهذا القدر
-----------------------------------------------------------
الجدول الثاني author عن مؤلف الكتاب المؤلف يختلف عن الناشر طبعا لان الناشر هو ناقل الكتاب
وبداخله ثلاثة حقول فقط
الاسم الاول - الاسم الاخير - الايميل
,ودالة str التي تعيد لنا الاسم الاول والاخير للكلاس
-----------------------------------------
الان واهم شيء لدينا جدول book
بداخله عدة حقول الحقل الاول
title عنوان الكتاب
authors الحقل هذا عباره عن manytomany كثير لكثير ( بمعنى المؤلف احتمال يكون له عدة كتب - والكتاب يكون له عدة مؤلفين ) مربوط مع جدول المؤلف
publisher الناشر ونوع الحقل foreignkey علاقة واحد لكثير وهو مفتاح اجنبي ومربوط مع جدول الناشر
-----------------------------------------------------------------------------------------------------------------
لو اردنا ان نحصل على كتاب معين او معلوماته
from mysite.books.models import Book
b = Book.objects.get(id=50)
b.title
الناتج
'The Django Book'
طلبنا الكتاب الذي يحمل الايدي رقم 50
طيب لو اردنا ان نحصل على حقل من المؤلف او الناشر بما انها حقول اجنبية ومربوطة مع هذا الجدول
سيكون كالتالي
b = Book.objects.get(id=50) # طلبنا الكتاب اللي يحمل الايدي رقم 50
b.publisher # هنا قمنا بتحديد الناشر لاتنسى ان لدينا كلاس بهذا الاسم ولكن نكتبة بحروف صغيره
<Publisher: Apress Publishing> # الناتج كما يظهر من دالة str
b.publisher.website # حقل الموقع للناشر لو اردنا طلبه وهكذا مع بقية الحقول
'http://www.apress.com/'
اما لو اردنا ان نستخرج الكتب الخاصة بناشر معين
كالتالي
p = Publisher.objects.get(name='Apress Publishing')# حددنا اسم الناشر هنا
p.book_set.all()# هنا طلبنا جميع الكتب
[<Book: The Django Book>, <Book: Dive Into Python>, ...]
طبعا افتراضيا يكون اسم الجدول المربوط بعلاقة مثال الكتب book_set
ولو اردنا ان نقوم بتغييره نظيف معامل للحقل المربوط
related_name ونعطيه اي قيمة
publisher = models.ForeignKey(Publisher, related_name='any')
سيصبح الطلب باسم any
لو اردنا ان نقوم بعرض المؤولفين لكتاب معين
>>> b = Book.objects.get(id=50)
>>> b.authors.all()
[<Author: Adrian Holovaty>, <Author: Jacob Kaplan-Moss>]
>>> b.authors.filter(first_name='Adrian')
[<Author: Adrian Holovaty>]
>>> b.authors.filter(first_name='Adam')
[]
طبعا الدرس يطول جداً وهناك تخصيص المدراء للنماذج وامور اكثر تعقيداً
لكن اكتفي بهذا القدر طالما ان الدورة هي عن اساسيات جانغو ووجب ان اكتب مايخص العلاقات بين الجداول لفهمها ولو قليلا
جميع الاكواد هي من موقع كتب جانغو (ذكرتها للامانه العلمية فقط)
الى هنا تنتهي دروتنا البسيطة جدا جدا
إن اصبت فهو من الله وإن اخطأت فمن نفسي والشيطان
وان شاء الله باأقرب فرصه ساطرح شرح فيديو لانشاء موقع متكامل عن ماتعلمناه بالاساسيات
ومن ثم ننتقل الى جانغو متقدم ونشرح كل شي متقدم
محتوى الدورة
django | |
---|---|
1 | متطلبات قبل بدء الدورة |
2 | ماهو جانغو |
3 | انشاء أول مشروع جانغو |
4 | Hello World |
5 | التعامل مع القوالب |
6 | حقن القوالب |
7 | قواعد البيانات-1 |
8 | قواعد البيانات-2 |
9 | التعامل مع لوحة التحكم |
10 | عرض البيانات بالصفحة الرئيسية |
11 | عرض التفاصيل |
12 | اضافة محتوى |
13 | تحديث البيانات |
14 | الاستمارات |
15 | الاستمارات-2 |
16 | تسجيل الاعضاء |
17 | تسجيل الدخول |
18 | الفلاتر في جانغو |
19 | التعامل مع قواعد البيانات- متقدم ( الدرس الاخير) الدرس الحالي |
عن الدرس
2 إعجاب |
3 متابع |
1 مشاركة |
3095 مشاهدات |
منذ 6 سنوات |
عرض المزيد.. جديد مقالاتي
لايوجد لديك حساب في عالم البرمجة؟
تحب تنضم لعالم البرمجة؟ وتنشئ عالمك الخاص، تنشر المقالات، الدورات، تشارك المبرمجين وتساعد الآخرين، اشترك الآن بخطوات يسيرة !