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()