Один из способов сделать это - «спрятать» значение, фактически присвоив полю другое имя, и выставив его только через свойство:
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
в своих запросах.