Каким способом можно автоматически заполнить авторство статьи? 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
)
При добавлении из панели администратора будет брать данные профиля и записывать их