如何从特定用户Django python获取数据

2024-04-18 10:19:18 发布

您现在位置:Python中文网/ 问答频道 /正文

在/添加介质时的完整性错误/ 唯一约束失败:用户\媒体。用户\ id唯一约束失败:用户\媒体。用户\ id 唯一约束失败:用户\u媒体。用户\u id

我试图从特定用户处获取数据,但我从数据库中的所有用户处获取所有数据。

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'

模板

{% 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']

signals.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()

Tags: instance用户imagedivformmodelsrequestsave
1条回答
网友
1楼 · 发布于 2024-04-18 10:19:18

过滤文件,使user引用request.user

@login_required
def profile(request):
    media_images = Media.objects.filter(user=request.user)
    context = {
        'media_images':media_images,  
    }
    return render(request, 'users/profile.html', context)

相关问题 更多 >