Django Models Many-to-Many удалить объект

Интересно, не могли бы вы мне помочь, у меня есть модели, настроенные следующим образом:

class Device(models.Model):
    hostname = models.CharField(unique=True, max_length=255)
    mgmt_ip = models.GenericIPAddressField(
        blank=True, null=True, unique=True, max_length=12)
    console_ip = models.GenericIPAddressField(
        blank=True, null=True, unique=False, max_length=12
    )

class ConfigurationFile(models.Model):
    name = models.CharField(blank=True, max_length=255)
    friendly_name = models.CharField(blank=True, max_length=255)
    file = models.FileField(
        upload_to='configuration/config_files/cisco/',
        validators=[FileExtensionValidator(allowed_extensions=['cfg'])]
    )

class ConfigurationFileApplied(models.Model):
    file_object = models.ForeignKey(
        ConfigurationFile, unique=True, null=True, on_delete=models.CASCADE)
    applied_to = models.ManyToManyField(Device)

Мой "ConfigurationFileApplied" связан с "ConfigurationFile", а "ConfigurationFileApplied" может быть связан с несколькими устройствами. Я ищу способ удалить "Device" из "ConfigurationFileApplied", когда удаляется config (абстрактный). Но я не могу понять как? :-/

когда конфигурация (абстрактная) удалена

Я не уверен, правильно ли я понял, но вы имеете в виду, если вы удалите объект file_object из ConfigurationFileApplied? Если да, то вы можете создать метод post_save()

from django.db.models.signals import post_save
from django.dispatch import receiver
# more imports

# your model classes here

@receiver(post_save, sender=ConfigurationFileApplied, dispatch_uid="update_devices")
def update_config(sender, instance, **kwargs):
    if not instance.file_object and instance.applied_to.all().count() > 0:
        instance.applied_to.clear()
Вернуться на верх