У меня проблема с удалением только одного объекта из моей базы данных, у меня есть код, который получает список имен хостов RDS из AWS, а затем сравнивает имена хостов rds, хранящиеся в моей базе данных, с именами, возвращенными AWS, если имя хоста rds хранится в моей БД и не возвращается AWS, оно должно быть удалено из моей базы данных, но мой код в конечном итоге удаляет все имена хостов RDS, хранящиеся в моей БД
Вот мои модели
class AwsAssets(BaseModel):
aws_access_token = models.CharField(max_length=512, blank=True, null=True)
aws_secret_token = models.CharField(max_length=512, blank=True, null=True)
rds_count = models.IntegerField(blank=True, null=True)
def __str__(self):
return '{} - {}'.format(
self.client_aws_access_token,
self.client_aws_secret_token
)
class Meta:
verbose_name_plural = "Aws Assets"
class AwsRdsNames(BaseModel):
host = models.CharField(max_length=300, null=True, blank=True)
port = models.IntegerField(null=True, blank=True)
asset_link = models.ForeignKey(AwsAssets, null=True, blank=True,
related_name="rds_endpoints", on_delete=models.CASCADE
)
region = models.CharField(max_length=56, null=True, blank=True)
scan_status = models.NullBooleanField(default=None)
last_scan = models.DateTimeField(null=True, blank=True)
def __str__(self):
return "{}:{}".format(self.host, self.port)
class Meta:
db_table = 'aws_rds_names'
ordering = ['-id']
и затем здесь блок кода, отвечающий за удаление имен хостов rds
all_stored_rds = AwsRdsNames.objects.all()
stored_rds = all_stored_rds.filter(asset_link=self.asset) #This returns all the stored rds hosts in db
aws_rds = get_rds() #This returns a list of rds hostname from aws
for rds in stored_rds:
if rds.host not in aws_rds:
AwsRdsNames.objects.filter(host=rds.host).delete()
этот код завершает удаление всех хостов rds, хранящихся в моей БД, вместо удаления тех, которые не были возвращены aws