Ошибка IntegrityError в / add-media / UNIQUE: сбой ограничения users_media.user_idUNIQUE: users_media.user_id Ошибка UNIQUE: users_media.user_id
Я пытаюсь получить данные от указанного пользователя c, но вместо этого я получаю все данные от всех пользователей в базе данных.
views.py
@login_required
def profile(request):
if request.method == 'GET':
media_images = Media.objects.all()
context = {
'media_images':media_images,
}
return render(request, 'users/profile.html', context)
@login_required
def add_media(request):
if request.method == 'POST':
form = MediaForm(request.POST, request.FILES)
if form.is_valid():
form.instance.user= request.user
form.save()
return redirect('http://127.0.0.1:8000/')
else:
form = MediaForm()
return render(request, 'users/add_media.html', {'form':form})
models.py
class Media(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE, null=True)
image_name = models.CharField(max_length=50)
image_description = models.CharField(max_length=80)
image_image = models.ImageField(upload_to='media', default='default.jpg')
def __str__(self):
return f'{self.user.username} Media'
template
{% extends "blog/base.html" %}
{% load crispy_forms_tags %}
{% block content %}
<div class="content-section container">
<div class="row justify-content-md-between ml-4 align-items-center ">
<div class='col-md-'>
<img width='100' src="{{user.profile.image.url}}" alt=""><span class='ml-4'>{{ user.username }}</span>
</div>
<div class='mr-4'>
<a class='mr-4' href="{% url 'add-media'%}">Add media</a>
<a href="#">Settings</a>
</div>
</div>
</div>
<div class="content-section">
<h2 class='center'>Your Medias</h2>
{% for media in media_images %}
<div class="profile-content-and-manage">
<div class="profile-content-div">
<p class='profile-paragraph-image paragraph-image-name'>{{media.image_name}}</p>
<p class='profile-paragraph-image paragraph-image-description'>{{media.image_description}} </p>
<img height="97px" class='profile-image' src='{{media.image_image.url}}'>
</div>
<div class="profile-manage-div">
<p class="profile-paragraph-image profile-paragraph-image-delete">X</p> <span class="profile-paragraph-image">Edit</span>
</div>
</div>
{% endfor %}
</div>
{% endblock content %}
forms.py
class MediaForm(forms.ModelForm):
class Meta:
model = Media
fields = ['image_name', 'image_description', 'image_image']
signal.py
from django.db.models.signals import post_save
from django.contrib.auth.models import User
from django.dispatch import receiver
from .models import Profile
@receiver(post_save, sender=User)
def create_profile(sender, instance, created, **kwargs):
if created:
Profile.objects.create(user=instance)
@receiver(post_save, sender=User)
def save_profile(sender, instance, **kwargs):
instance.profile.save()