Мне нужно убедиться, что объект (Device
) сохраняется только один раз и только в одну базу данных.
У меня есть несколько баз данных PostGre SQL:
List of databases
Name | Owner | Encoding | Collate | Ctype | Access privileges
-------------------------------+-------+----------+------------+------------+-------------------
admin | admin | UTF8 | en_US.utf8 | en_US.utf8 |
postgres | admin | UTF8 | en_US.utf8 | en_US.utf8 |
reference | admin | UTF8 | en_US.utf8 | en_US.utf8 |
template0 | admin | UTF8 | en_US.utf8 | en_US.utf8 | =c/admin +
| | | | | admin=CTc/admin
template1 | admin | UTF8 | en_US.utf8 | en_US.utf8 | =c/admin +
| | | | | admin=CTc/admin
workspace_A | admin | UTF8 | en_US.utf8 | en_US.utf8 |
workspace_B | admin | UTF8 | en_US.utf8 | en_US.utf8 |
workspace_C | admin | UTF8 | en_US.utf8 | en_US.utf8 |
workspace_D | admin | UTF8 | en_US.utf8 | en_US.utf8 |
Рабочие пространства A, B, C и D имеют таблицу с именем devices_device
, которая содержит идентификатор, имя и некоторые другие поля.
Какие функции мне нужно вызывать при сохранении Device
(переписывание функции Django save()
), чтобы убедиться, что Device
с такими же параметрами еще не существует?
Это то, что я сейчас выделил, с вопросительными знаками, где я не знаю, какую функцию использовать
def save(self, *args, **kwargs):
for tab in ?.objects.all():
if tab.object.using('devices_device')? == self.device_reference
and ?.device_name == self.device_name
and ?.device_address == self.device_address
and ?.device_position== self.device_position
and ?.device_desciption == self.device_desciption:
raise ValidationError(
"This device already exists in another workspace!"
)
super().save(*args, **kwargs)