Значение по умолчанию для пользователя ForeignKey с администратором Django - PullRequest
18 голосов
/ 12 апреля 2011
author = models.ForeignKey(User)

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

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

Ответы [ 2 ]

45 голосов
/ 12 апреля 2011
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
        )
0 голосов
/ 12 апреля 2011

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

Это можно сделать, переопределив метод get_form для ModelAdmin.

...