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

如何从特定用户django python获取数据,python,django,Python,Django,在/添加介质时的完整性错误/ 唯一约束失败:用户\媒体。用户\ id唯一约束失败:用户\媒体。用户\ id 唯一约束失败:用户\u媒体。用户\u id 我试图从特定用户处获取数据,但我从数据库中的所有用户处获取所有数据。 views.py @login_required def profile(request): if request.method == 'GET': media_images = Media.objects.all() con

在/添加介质时的完整性错误/ 唯一约束失败:用户\媒体。用户\ 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 %}

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

您可以过滤文件,以便
用户
引用
请求。用户

@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)
@需要登录\u
def配置文件(请求):
media\u images=media.objects.filter(用户=request.user)
上下文={
“媒体图像”:媒体图像,
}

返回render(请求'users/profile.html',context)
过滤文件,以便
用户
引用
请求。用户

@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)
@需要登录\u
def配置文件(请求):
media\u images=media.objects.filter(用户=request.user)
上下文={
“媒体图像”:媒体图像,
}

返回render(请求'users/profile.html',context)
Now everythingdisappeared@Pamade:您是否在
媒体
记录中指定了任何用户数据(是否存在
用户id
列与
NULL
不同的记录?)。您登录的用户是否有任何记录?好的,当我在forms.py字段中添加“user”字段时,它起作用了。现在,当我想添加媒体时,我需要选择特定的用户。我可以在不选择用户的情况下执行此操作吗?我可以自动选择已登录的用户吗?@Pamake:不,只要在表单有效时设置用户,那么
form.instance.user=request.user
在您创建
Media
对象的视图中(当然不是您列出媒体的视图)。@Pamake:您可以编辑您的问题并共享完整的回溯吗。乍一看,我认为这是一个模板,而不是一个有问题的视图disappeared@Pamade:您是否在
媒体
记录中指定了任何用户数据(是否存在
用户id
列与
NULL
不同的记录?)。您登录的用户是否有任何记录?好的,当我在forms.py字段中添加“user”字段时,它起作用了。现在,当我想添加媒体时,我需要选择特定的用户。我可以在不选择用户的情况下执行此操作吗?我可以自动选择已登录的用户吗?@Pamake:不,只要在表单有效时设置用户,那么
form.instance.user=request.user
在您创建
Media
对象的视图中(当然不是您列出媒体的视图)。@Pamake:您可以编辑您的问题并共享完整的回溯吗。乍一看,我认为是模板,而不是视图出了问题。