Я не знаю ни одного способа изменить выбор полей модели для каждого экземпляра, но если это форма, вы можете переопределить выбор полей формы (пример записан из памяти, поэтому он может быть не точным на 100%).):
класс MyModelForm (forms.ModelForm): класс Meta: model = MyModel
def __init__(self, *args, **kw):
super(MyModelForm, self).__init__(*args, **kw)
if some_condition:
self.fields["myfield"].choices = (...)
Важно : вы хотите переопределить self.fields["myfield"]
, не self.myfield
- последний является атрибутом класса, поэтому его изменение затронет все экземпляры MyModelForm
для текущего процесса, что вы обычно не замечаете при запуске сервера dev, но это приводит к очень нестабильному поведению на производстве.