تخطَّ إلى المحتوى

🎸 شرح Django

العلاقات بين النماذج

الدرس 20 من 25· ⏱ 1 دقائق قراءة

واحد لكثير: ForeignKey

class Author(models.Model):
    name = models.CharField(max_length=100)

class Post(models.Model):
    title = models.CharField(max_length=200)
    author = models.ForeignKey(Author, on_delete=models.CASCADE,
                               related_name="posts")

الوصول:

post.author.name           # كاتب المنشور
author.posts.all()         # كل منشورات الكاتب (related_name)

on_delete

on_delete=models.CASCADE   # حذف المنشورات بحذف الكاتب
on_delete=models.SET_NULL  # ضبطها NULL (مع null=True)
on_delete=models.PROTECT   # منع الحذف

كثير لكثير: ManyToManyField

class Tag(models.Model):
    name = models.CharField(max_length=50)

class Post(models.Model):
    tags = models.ManyToManyField(Tag, related_name="posts")
post.tags.add(tag)
post.tags.all()
tag.posts.all()

واحد لواحد: OneToOneField

class Profile(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE)

💡 استخدم select_related (FK) وprefetch_related (M2M) لتقليل عدد الاستعلامات.

🎯 التالي: واجهات REST مع DRF.

هل كان هذا الدرس مفيدًا؟