Django: Как удалить группу, связанную с командой?

Я хочу расширить групповую модель Django. Для этого я создал класс Team, который ссылается на модель группы с полем OneToOne. Создание и обновление работают как ожидалось, но мне не удается удалить команду.

# teamapp/models.py
from django.db import models
from rules.contrib.models import RulesModel
from django.contrib.auth.models import Group


class Team(RulesModel):
    group = models.OneToOneField(
        Group,
        on_delete=models.CASCADE,
        primary_key=True,
    )
    name = models.CharField(max_length=80)

    def save(self, *args, **kwargs):
        self.update_or_create_group()
        return super().save(*args, **kwargs)

    def update_or_create_group(self, *args, **kwargs):
        group, _ = Group.objects.update_or_create(
            id=self.pk,
            defaults={"name": self.name},
        )
# teamapp/signals.py
from django.db.models.signals import post_delete
from django.dispatch import receiver
from django.db import transaction
from django.contrib.auth.models import Group
from teamapp.models import Team


@receiver(post_delete, sender=Team)
def delete_group(sender, instance, created, **kwargs):
    # TODO: Use celery for async operation: https://docs.djangoproject.com/en/3.2/topics/db/transactions/
    transaction.on_commit(lambda: delete_group(instance))


def delete_group(team_instance):
    Group.objects.filter(id=team_instance.group).delete()

Почему-то сигнал не срабатывает. Есть ли другой способ?

Не уверен, что это приемлемый способ, но я забыл загрузить сигнал. Поэтому я загрузил его через файл apps.py.

# teamapp/apps.py
from django.apps import AppConfig


class TeamappConfig(AppConfig):
    default_auto_field = "django.db.models.BigAutoField"
    name = "teamapp"
    verbose_name = "Team"

    def ready(self):
        import teamapp.signals
Вернуться на верх