Django readonly поле только при изменении, но не при создании
У меня есть модель Team
whit players
ManyToManyField, и я хочу иметь возможность добавлять Player
в новую команду при создании, но не в состоянии ее модифицировать после создания.
Если я сделаю поле players
только для чтения следующим образом:
# admin.py
class TeamAdmin(admin.ModelAdmin)
readonly_fields = ['players']
admin.site.register(Team, TeamAdmin)
Я не смогу добавить игроков в новый Team
.
Как я могу сделать поле players
"только для чтения после создания" или что-то в этом роде?
Ответы
Ответ 1
Вам необходимо переопределить метод get_readonly_fields()
вашего класса администратора.
# admin.py
class TeamAdmin(admin.ModelAdmin)
...
def get_readonly_fields(self, request, obj=None):
if obj: #This is the case when obj is already created i.e. it an edit
return ['players']
else:
return []