Как запретить клиентам создавать экземпляр класса модели с помощью метода init по умолчанию? - PullRequest
0 голосов
/ 10 ноября 2011

Одним из свойств в классе модели является сгенерированное значение. Таким образом, я хочу ограничить пользователя от вставки собственной непрозрачной строки. Я хочу, чтобы пользователь использовал один из моих методов менеджера для создания экземпляра. Есть ли способ предотвратить пользователя в моем случае использования?

1 Ответ

0 голосов
/ 10 ноября 2011

Один из способов сделать это - «спрятать» значение, фактически присвоив полю другое имя, и выставив его только через свойство:

class MyClass(models.Model):
    _real_field = models.CharField(max_length=10)

    @property
    def fake_field(self):
        return self._real_field

Таким образом, вы можете установить real_field в вашем менеджере, но только документируйте наличие fake_field.

Недостатком является то, что вам придется использовать _real_field в своих запросах.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...