Решил таким образом.
Добавил в модельке автора.
from django.contrib.auth.models import User
from django.db import models
class Image(models.Model):
title = models.CharField('Название', max_length=200)
image = models.ImageField(upload_to='images')
tags = models.ManyToManyField('Tag')
author = models.ForeignKey(User, related_name='author', on_delete=models.CASCADE)
При загрузке изображения сохраняем автора.
@login_required(redirect_field_name='my_redirect_field')
def image_upload(request):
form = ImageForm(request.POST, request.FILES)
if request.method == 'POST':
if form.is_valid():
img_user = form.save(commit=False)
img_user.author = request.user
img_user.save()
image = form.save()
tags = form.cleaned_data['tags_']
if tags:
for tag in tags.split(' '):
tag, created = Tag.objects.get_or_create(name=tag)
image.tags.add(tag)
return redirect('index')
else:
return render(request, 'main/image_upload.html', context_func())
В HTML шаблоне проверка на заход админа или на заход автора поста.
{% if request.user.is_superuser or img_obj.author == request.user %}
{% if request.user.is_authenticated %}
<div class="btn-group">
<a class="btn btn-sm btn-outline-secondary" href="{% url 'delete' img_obj.id request.user.id %}">Удалить</a>
<a class="btn btn-sm btn-outline-secondary" href="{% url 'image-edit' img_obj.id request.user.id %}">Редактировать</a>
</div>
{% endif %}
{% endif %}
Спасибо всем за помощь.