Как добавить автоматическую передачу имени пользователя в форму? Python Django
мне необходимо заполнить поле автора для формы автоматически для авторизованных пользователей. Также при отправке формы происходит ошибка из за нехватки обязательного поля slug. Есть возможность заранее заполнить поля author и slug и отправить их вместе с остальными данными в бд? Спасибо.
Код из views:
class CreatePost(CreateView):
form_class = NewPostForm
template_name = 'blog/add_post.html'
def get_context_data(self, *, object_list=None, **kwargs):
context = super().get_context_data(**kwargs)
context['title'] = 'Add post'
return context
Код из models:
class Post(models.Model):
title = models.CharField(max_length=100, verbose_name='Заголовок')
slug = models.SlugField(max_length=100, unique=True, verbose_name='URL')
author = models.CharField(max_length=100, verbose_name='Автор')
content = models.TextField(blank=False, verbose_name='Контент')
photo = models.ImageField(upload_to='photos/%Y/%m/%d/', blank=True, verbose_name='Фото')
views = models.IntegerField(default=0, verbose_name='Просмоторы')
created_at = models.DateTimeField(auto_now_add=True, verbose_name='Дата создания')
updated_at = models.DateTimeField(auto_now=True, verbose_name='Дата обновления')
is_published = models.BooleanField(default=False, verbose_name='Опубликовано')
category = models.ForeignKey(Category, on_delete=models.PROTECT, related_name='posts', verbose_name='Категория')
tags = models.ManyToManyField(Tag, blank=True, related_name='posts', verbose_name='Теги')
def __str__(self):
return self.title
def get_absolute_url(self):
return reverse('post', kwargs={'slug': self.slug})
class Meta:
verbose_name = 'Статья'
verbose_name_plural = 'Статьи'
ordering = ['-created_at']
Код из админки:
class PostAdmin(admin.ModelAdmin):
prepopulated_fields = {'slug': ('title',)}
list_display = ('id', 'title', 'slug', 'author', 'get_photo', 'views', 'created_at', 'updated_at', 'is_published', 'category')
list_display_links = ('id', 'title')
search_fields = ('title', 'content')
list_editable = ('is_published', )
list_filter = ('is_published', 'category', 'tags')
readonly_fields = ('views', 'created_at', 'updated_at', 'get_photo')
fields = ('title', 'slug', 'content', 'author', 'get_photo', 'photo', 'views', 'created_at', 'updated_at', 'category', 'tags', 'is_published')
def get_photo(self, obj):
if obj.photo:
return mark_safe(f'<img src="{obj.photo.url}" width="50">')
return '-'
get_photo.short_description = 'Фото'