Djangoمتد delete()

در جنگو (Django)، حذف دادهها از پایگاه داده معمولاً با استفاده از مدلهای تعریفشده انجام میشود. برای حذف دادهها، میتوانید از متد delete()
استفاده کنید.
روشهای حذف داده در Django:
1. حذف یک شیء خاص
برای حذف یک رکورد خاص، ابتدا باید شیء مورد نظر را دریافت کرده و سپس متد delete()
را روی آن فراخوانی کنید.
نمونه:
from myapp.models import MyModel
# دریافت شیء
obj = MyModel.objects.get(id=1)
# حذف شیء
obj.delete()
توضیح:
- در این مثال، رکوردی با
id=1
دریافت شده و سپس حذف میشود.
2. حذف چندین شیء بهصورت گروهی
برای حذف گروهی از رکوردها، میتوانید از QuerySet استفاده کنید و متد delete()
را مستقیماً فراخوانی کنید.
نمونه:
from myapp.models import MyModel
# حذف تمام رکوردهایی که فعال نیستند
MyModel.objects.filter(is_active=False).delete()
توضیح:
- در این مثال، تمام رکوردهایی که مقدار
is_active
آنهاFalse
است حذف میشوند.
3. حذف تمام دادهها از یک مدل
برای حذف تمامی رکوردهای موجود در یک مدل، از متد all()
همراه با delete()
استفاده کنید.
نمونه:
from myapp.models import MyModel
# حذف تمام رکوردها
MyModel.objects.all().delete()
نکات مهم:
- Cascade Delete: اگر مدل شما دارای روابط ForeignKey با دیگر مدلها باشد، حذف یک رکورد میتواند به حذف خودکار رکوردهای مرتبط منجر شود. این رفتار به دلیل تنظیمات
on_delete
در تعریف ForeignKey رخ میدهد (مانندmodels.CASCADE
).
نمونه:
class Author(models.Model):
name = models.CharField(max_length=100)
class Book(models.Model):
title = models.CharField(max_length=200)
author = models.ForeignKey(Author, on_delete=models.CASCADE)
در این مثال، اگر یک نویسنده حذف شود، تمام کتابهای مرتبط با آن نیز حذف خواهند شد.
- Signals برای حذف سفارشی: برای انجام عملیات خاص هنگام حذف دادهها، میتوانید از سیگنال
pre_delete
یاpost_delete
استفاده کنید.
نمونه:
from django.db.models.signals import pre_delete
from django.dispatch import receiver
from myapp.models import MyModel
@receiver(pre_delete, sender=MyModel)
def before_delete_handler(sender, instance, **kwargs):
print(f”About to delete: {instance}“)
در Django برای حذف دادهها از پایگاه داده، میتوانید از متد delete()
استفاده کنید. برای حذف یک شیء خاص، آن را دریافت کرده و حذف میکنید. همچنین امکان حذف گروهی رکوردها یا تمامی دادههای یک مدل وجود دارد. در روابط بین مدلها، تنظیم on_delete
مشخص میکند که حذف یک رکورد چگونه روی دادههای مرتبط تأثیر بگذارد. برای شخصیسازی عملیات حذف، میتوانید از سیگنالها استفاده کنید.
دیدگاهتان را بنویسید