Как сделать автоматическое назначение текущего пользователя в качестве автора при создании поста?

Для автоматического назначения текущего пользователя в качестве автора при создании поста в приложении на Django можно воспользоваться сигналами (signals) и перехватчиками сигналов (signal handlers).

Шаги, необходимые для реализации этой функциональности:

1. Импортируем необходимые модули:

from django.db.models.signals import pre_save
from django.dispatch import receiver
from django.contrib.auth.models import User
from django.db import models

2. Добавляем поле автора к модели вашего поста (предположим, что модель поста называется Post):

class Post(models.Model):
    title = models.CharField(max_length=100)
    content = models.TextField()
    author = models.ForeignKey(User, on_delete=models.CASCADE)
    created_at = models.DateTimeField(auto_now_add=True)

3. Создаем перехватчик сигнала pre_save, который будет назначать текущего пользователя в качестве автора при создании нового поста:

@receiver(pre_save, sender=Post)
def assign_current_user(sender, instance, **kwargs):
    if not instance.author:
        instance.author = User.objects.get(id=instance._state.request.user.id)

4. При создании или обновлении поста система автоматически будет присваивать текущего пользователя в поле author модели Post.

Таким образом, при создании нового поста данная функциональность гарантирует, что в качестве автора будет указан текущий пользователь системы, который выполнил создание поста.

Не забудьте запустить миграции после внесения изменений в модель поста.