Значение по умолчанию для пользователя ForeignKey с администратором Django
author = models.ForeignKey(User)
Можно ли установить значение по умолчанию для этого поля для автоматического выбора зарегистрированного пользователя? Я знаю, что вы можете сделать это в методе сохранения, но мой клиент попросил, чтобы он автоматически по умолчанию был зарегистрированным пользователем во время редактирования, чтобы избежать путаницы.
В этой статье говорится о том, как обновлять ее во время сохранения, просто не во время редактирования.
Ответы
Ответ 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.