Django: Запрос стекированного инлайн-объекта | ValueError at /profile Cannot query "Anthony_Jamez12": Должен быть экземпляр "Profile"

Я пытаюсь создать клон Instagram. Итак, я пытаюсь сделать запрос к фотографиям пользователя, которые были загружены, и отобразить их на фронтенде. Когда я делаю запрос в стековой модели Uploads, я могу получить фотографии для отображения на фронтенде, но не фотографии, принадлежащие пользователю (все фотографии в базе данных отображаются на фронтенде). Я пытался найти способ заставить все фотографии перейти в расширенную модель пользователя, но не смог найти способ сделать это. В основном я пытаюсь получить изображения, которые загрузил пользователь, и если кто-то может помочь, я буду очень признателен.

models.py

class Profile(models.Model):
    user = models.OneToOneField(User, on_delete = models.CASCADE, null = False, blank = True)
    first_name = models.CharField(max_length = 50, null = True, blank = True)
    last_name = models.CharField(max_length = 50, null = True, blank = True)
    phone = models.CharField(max_length = 50, null = True, blank = True)
    email = models.EmailField(max_length = 50, null = True, blank = True)
    bio = models.TextField(max_length = 300, null = True, blank = True)
    profile_picture = models.ImageField(default = 'default.png', upload_to = "img/%y", null = True, blank = True)
    #uploads = models.ForeignKey(Uploads, on_delete = models.CASCADE, default = None, null = True)

    def __str__(self):
        return f'{self.user.username} Profile'

class Uploads(models.Model):
    caption = models.CharField(max_length = 100, blank=True)
    image = models.FileField(upload_to = "img/%y", blank=True, null = True)
    profile = models.ForeignKey(Profile, on_delete = models.CASCADE, default = None, null = True)
    id = models.AutoField(primary_key = True, null = False)
    

    def __str__(self):
        return self.caption and str(self.image)

views.py

def profile(request):
    img = Uploads.objects.filter(profile_id = request.user)    #Here is my error and question
    #img = Uploads.objects.all()
    profile = Profile.objects.filter(user = request.user)
    context = {"profile": profile, "img": img}

    return render(request, "main/profile.html", context)

Вот визуальное представление моделей, если это поможет понять, что я пытаюсь получить. enter image description here

Сделайте это как :-

def profile(request):
    img = Uploads.objects.filter(profile_id = request.user)
    #img = Uploads.objects.all()

# Changed this line
    profile = Profile.objects.filter(user = request.user.profile)
    context = {"profile": profile, "img": img}

    return render(request, "main/profile.html", context)
def profile(request):
    img = Uploads.objects.filter(profile_id = request.user)

Вы передаете объект типа User в profile_id, который требует int или если profile, то требуется объект Profile. Измените его на

profile = Profile.objects.filter(user = request.user)
img = Uploads.objects.filter(profile_id = profile.id)
context = {"profile": profile, "img": img}

ИЛИ

img = Uploads.objects.filter(profile__user = request.user)
profile = Profile.objects.filter(user = request.user)

Спасибо PrOgRaMmEr и ABHISHEK TIWARI, это то, что мне нужно было изменить.

def profile(request):
    img = Uploads.objects.filter(profile_id = request.user.profile)
    profile = Profile.objects.filter(user = request.user)
    context = {"profile": profile, "img": img}

    return render(request, "main/profile.html", context)
Вернуться на верх