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

Автоматическое заполнение поля created_by с административным сайтом Django

Я хочу использовать интерфейс администратора 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 (что довольно просто) и автоматически заполнять его текущим пользователем (что кажется сложнее, чем нужно).

4b9b3361

Ответ 2

Вам нужно указать default для этого поля, в этом случае вызов метода, который получает текущего пользователя (см. auth документацию, чтобы получить текущего пользователя).

Ответ 3

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

Ответ 4

Другой способ сделать это может быть:

author = models.ForeignKey('auth.User', on_delete=models.CASCADE)

Примечание: это со ссылкой на Django 1.11. Не могу сказать, что это работает с другими версиями.