Подтвердить что ты не робот

Значение по умолчанию для пользователя ForeignKey с администратором Django

author = models.ForeignKey(User)

Можно ли установить значение по умолчанию для этого поля для автоматического выбора зарегистрированного пользователя? Я знаю, что вы можете сделать это в методе сохранения, но мой клиент попросил, чтобы он автоматически по умолчанию был зарегистрированным пользователем во время редактирования, чтобы избежать путаницы.

В этой статье говорится о том, как обновлять ее во время сохранения, просто не во время редактирования.

4b9b3361

Ответ 1

class MyModelAdmin(admin.ModelAdmin):
    def formfield_for_foreignkey(self, db_field, request, **kwargs):
        if db_field.name == 'author':
            kwargs['initial'] = request.user.id
        return super(MyModelAdmin, self).formfield_for_foreignkey(
            db_field, request, **kwargs
        )

Ответ 2

Вы можете переопределить часть администратора вашей модели, чтобы не отображать автора, если объект, который вы редактируете, является новым, потому что он должен быть установлен для текущего пользователя и только если вы редактируете объект, показывает ли поле?

Вы сделали бы это, переопределив метод get_form ModelAdmin.