Каким способом можно автоматически заполнить авторство статьи? Django models.py

Каким методом, способом я могу сделать автоматическое заполнение автора статьи - author = models.ForeignKey('auth.User', on_delete = models.CASCADE)? Возможно это как-то можно сделать с помощью django.contrib.auth.get_user() но, что передавать в качестве аргумента?

models.py

from django.db import models
from taggit.managers import TaggableManager

class Article(models.Model):
    title = models.CharField(max_length = 55)
    author = models.ForeignKey('auth.User', on_delete = models.CASCADE)
    date_create = models.DateField(auto_now = True)
    text = models.TextField()
    tags = TaggableManager()

    def __str__(self):
        return self.title

Страница добавления статьи в админке Страница добавления статьи в админке


Ответы (1 шт):

Автор решения: R7RBD

Можно попробовать вот так:


# В файле models.py
from django.db import models
from django.contrib.auth.models import User

class Article(models.Model):
    author = models.ForeignKey(
        to=User,
        on_delete=models.CASCADE,
        editable=False, # Запретить изменения чтобы убрать из ручного редактирования
    )

   
# В файле admin.py
@admin.register(Article)
class ArticleAdmin(admin.ModelAdmin):

    def save_model(self, request, obj, form, change):
    """
    Переопределяем метод сохранения модели
    """
        if not change: # Проверяем что запись только создаётся
            obj.author = request.user # Присваеваем полю автор текущего пользователя
    
        super(ArticleAdmin, self).save_model(
            request=request,
            obj=obj,
            form=form,
            change=change
        )

При добавлении из панели администратора будет брать данные профиля и записывать их

→ Ссылка