Как изменить создание устройств, чтобы управление ими осуществлялось только через модель Client, и ограничить прямое создание устройств? [закрыто]
В настоящее время у меня есть система, в которой устройства можно создавать и управлять ими непосредственно через модель Device. Однако я хочу изменить ее таким образом, чтобы устройства можно было добавлять или удалять только через модель Client, а не напрямую через модель Device. В частности, я хочу:
Запретите создавать или изменять устройства непосредственно через модель Device. Разрешите добавлять и удалять устройства только через модель Client, чтобы при работе с клиентом я мог управлять его устройствами. Убедитесь, что при добавлении устройства к клиенту мне не нужно повторно вводить информацию о клиенте, поскольку я уже нахожусь в контексте этого клиента.class Client(BaseModel): inn = models.CharField(max_length=14, unique=True, verbose_name=«СТИР», validators=[validate_inn]) name = models.CharField(max_length=255, verbose_name=«Имя пользователя») pinfl = models.CharField(max_length=14, blank=True, null=True, verbose_name=«ПИНФЛ») телефон = models.CharField(max_length=13, verbose_name=«Телефон», null=True, blank=True) название_банка = models.CharField(max_length=255, verbose_name=«Банк») адрес = models.CharField(max_length=255, verbose_name=«Адрес») дата_рождения = models.DateField(null=True, blank=True, verbose_name=«Дата рождения»)
class Meta:
verbose_name = "Клиент"
verbose_name_plural = "Клиенты"
def clean(self):
if self.phone:
self.phone = self.phone.strip().replace(" ", "") # Remove spaces
if self.phone.startswith("998") and len(self.phone) == 12:
self.phone = f"+{self.phone}"
elif len(self.phone) == 9 and self.phone.isdigit():
self.phone = f"+998{self.phone}"
def save(self, *args, **kwargs):
self.date_birth = parse_birth_date(self.pinfl)
super().save(*args, **kwargs)
def __str__(self):
return self.inn
class Device(BaseModel): OWNER_CHOICES = [ (“bank”, “bank”), (“smartkassa”, “smartcassa”), (“personal”, “personal”), ]
name = models.CharField(max_length=255, verbose_name="Название")
is_active = models.BooleanField(verbose_name="Активен", blank=True, default=True)
kkm_serial_number = models.CharField(max_length=255, unique=True, verbose_name="ККМ", help_text="Контрольно-кассовая машина")
fm_serial_number = models.CharField(max_length=255, verbose_name="ФМ", blank=True, null=True, help_text="Фиксальный память")
owner_type = models.CharField(max_length=10, choices=OWNER_CHOICES, verbose_name="Тип владельца")
client = models.ForeignKey(to=Client, verbose_name="Клиент", on_delete=models.CASCADE, related_name="devices", blank=True)
class Meta:
verbose_name = "Устройства"
verbose_name_plural = "Устройствы"
def __str__(self):
return f"{self.name} ({self.kkm_serial_number})"