Ответ 1
http://code.djangoproject.com/wiki/CookBookNewformsAdminAndUser
Применяет методы сохранения объектов ModelAdmin.
Я хочу использовать интерфейс администратора Django для очень простого веб-приложения, но я не могу обойти проблему, которую не так сложно решить.
Рассмотрим следующее:
class Contact(models.Model):
name = models.CharField(max_length=250, blank=False)
created_by = models.ForeignKey(User, blank=False)
Я не могу найти способ автоматического заполнения поля created_by и сообщить администратору Django об этом. Большая часть метода, который я видел, подразумевает перегрузку метода сохранения объекта и передачу его пользователю запроса. Все они требуют создания ваших пользовательских представлений и/или форм.
Оптимально форма для создания новых контактов на сайте администратора не должна показывать поле created_by (что довольно просто) и автоматически заполнять его текущим пользователем (что кажется сложнее, чем нужно).
http://code.djangoproject.com/wiki/CookBookNewformsAdminAndUser
Применяет методы сохранения объектов ModelAdmin.
Вам нужно указать default для этого поля, в этом случае вызов метода, который получает текущего пользователя (см. auth документацию, чтобы получить текущего пользователя).
Мне действительно хотелось найти лучшее решение, чем те, которые я нашел в другом месте, поэтому я написал несколько промежуточных программ - реализацию в вопросе Заполнять идентификатор пользователя. Мое решение не требует изменений в какой-либо форме или представлении.
Другой способ сделать это может быть:
author = models.ForeignKey('auth.User', on_delete=models.CASCADE)
Примечание: это со ссылкой на Django 1.11. Не могу сказать, что это работает с другими версиями.