Сохранить создателя для объектов, созданных в панели администратора Django

#python #django

#python #django

Вопрос:

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

Любые предложения о том, как сделать это самым простым способом?

Приветствия,

Питер

 
class UserMessage(models.Model):
    reciever_id = models.OneToOneField(
        User,
        on_delete=models.CASCADE,
        primary_key=True,
    )
    heading = models.CharField(max_length=60)
    message = models.TextField(blank=True)
    time_created = models.DateTimeField(auto_now_add=True)

    creator_id = models.ForeignKey(User)

  

Комментарии:

1. Есть какой-либо код, показывающий, что ваш models.py и admin.py как выглядит?

2. Добавил его в описание сообщения, чтобы сделать его немного более читаемым

Ответ №1:

Вам нужно добавить save_model метод в ваш администратор модели:

 def save_model(self, request, obj, form, change):
    if not obj.creator_id:  # if obj does not have a creator
        obj.creator_id = request.user
    super().save_model(request, obj, form, change)
  

Подробнее здесь