Как я могу реализовать сигналы post_save в Django?

В настоящее время я создаю приложение для геолокации, и я немного застрял. Я пытаюсь реализовать сигналы post_save Django в этом коде, но я не могу понять, что именно мне нужно сделать. любая помощь здесь будет признательна. Вот мой код:

from ipaddress import ip_address

from django.contrib.auth import get_user_model

from celery import shared_task из apps.users.abstractapi import AbstractAPI

User = get_user_model()

@shared_task def enrich_user(user_pk): user = User.objects.get(pk=user_pk) api = AbstractAPI()

location_details = api.get_geolocation_details(ip_address=user.ip_address)
if location_details is not None:
    user.country = location_details.get("country")
    user.country_code = location_details.get("country_code")
    user.country_geoname_id = location_details.details.get("country_geoname_id")
    user.longitude = location_details.get("longitude")
    user.latitude = location_details.get("latitude")
    user.save(update_fields=("country", "country_code", "country_geoname_id", "longitude", "latitude"))

holiday_details = api.get_holiday_details(
    country_code=user.country_code,
    day=user.date_joined.day,
    month=user.date_joined.month,
    year=user.date_joined.year,
)

if holiday_details is not None and any(holiday_details):
    user.joined_on_holiday = True
    user.save(update_fields=("joined_on_holiday",))

Сигнал post_save в Django выглядит следующим образом:

from django.dispatch import receiver

@receiver(models.signals.post_save, sender=User)
def your_function(sender, instance, using, **kwargs):
    # your code that you want to run

    instance.save()

Будьте осторожны с сохранением экземпляра - это само по себе вызовет повторное выполнение сигнала post_save. Вы должны поставить условие, которое будет оцениваться только один раз перед сохранением экземпляра. Что-то вроде:

if instance.joined_on_holiday == False:
   instance.joined_on_holiday = True
   instance.save()
Вернуться на верх