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 []