Как изменить создание устройств, чтобы управление ими осуществлялось только через модель 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})"
Вернуться на верх