Я использую Django 1.9.Django Admin - отключить обновление для полей FK
У меня есть несколько моделей:
class MyOtherModel:
my_other_prop = models.IntergerField()
class MyModel:
some_prop = models.IntegerField()
my_other_model = models.ForeignKey(MyOtherModel)
И моя модель админ:
class MyModelAdmin(ModelAdmin):
model = MyModel
fields = ['some_prop', 'my_other_model']
Теперь это по умолчанию даст мне возможность установить my_other_model
, создавать my_other_model
и обновлять my_other_model
на форме , Я хочу отключить редактирование (обновление) my_other_model
. Я все еще хочу иметь возможность установить его и все еще хочу иметь возможность создать его с MyModelAdmin
. Поскольку MyOtherModel
не отображается через админ в любом другом месте, идея состоит в том, что с точки зрения админ-секции модель неизменна.
Я вырыл вокруг документов Django и немного искал Google, но не нашел способ выполнить это. Я не хочу, чтобы поле было только для чтения, потому что я хочу иметь возможность создавать их. Я не думаю, что хочу переопределить get_readonly_fields()
, чтобы вернуть false, если объект существует в этом случае, потому что я все равно хочу, чтобы иметь возможность изменять, какой MyOtherModel
MyModel
имеет .. просто не отредактировал MyOtherModel
сам.
Может ли кто-нибудь указать мне правильное направление здесь? Должен ли я использовать другой подход? Любой совет будет оценен, спасибо много!
Пол, спасибо за ответ. Нет, это не будет работать так, как это делается для полей в ссылках при просмотре списка. Я пытаюсь сделать это, находясь в режиме редактирования/создания. – TheMethod
Если вы посмотрите на строки 160 и переопределение полей формы в коде администратора, разрешения могут работать. или просто переопределить поле потенциально: https://github.com/django/django/blob/917cc288a38f3c114a5440f0749b7e5e1086eb36/django/contrib/admin/options.py – Paul