Junior — Middle
65
Имели ли вы опыт использования подзапросов или триггеров в Django ORM?
Answer from AI
sobes.tech AI
В Django ORM подзапросы можно реализовать с помощью класса Subquery, который позволяет вставлять один запрос внутрь другого. Это полезно для сложных выборок.
Пример подзапроса:
from django.db.models import OuterRef, Subquery
latest_order = Order.objects.filter(customer=OuterRef('pk')).order_by('-date')
customers = Customer.objects.annotate(latest_order_date=Subquery(latest_order.values('date')[:1]))
Что касается триггеров, Django ORM напрямую не поддерживает триггеры на уровне базы данных, так как это функционал самой СУБД. Однако можно использовать сигналы Django (pre_save, post_save и т.д.) для выполнения действий при изменении моделей, что по сути является аналогом триггеров на уровне приложения.
Пример сигнала:
from django.db.models.signals import post_save
from django.dispatch import receiver
@receiver(post_save, sender=MyModel)
def my_handler(sender, instance, created, **kwargs):
if created:
# Действия после создания объекта
pass