Получение контекстных данных об атрибуте в модели в Django DetailView

Я пытаюсь отфильтровать все отзывы, которые соответствуют объявлениям, созданным определенным пользователем. Цель состоит в том, чтобы поместить все отзывы, полученные кем-либо на его объявлениях, на страницу профиля. Я могу использовать get_context_data для извлечения отзывов из объявлений, но я хочу фильтровать по отношениям в самом объявлении.

Views.py

class ProfileDetailView(DetailView):

    model = Profile
    template_name = 'account/profile_detail.html'
    context_object_name = 'profile_detail'

    def get_object(self):
        return self.request.user.profile

    def get_context_data(self, **kwargs):
        context = super(ProfileDetailView, self).get_context_data(**kwargs)
        context['reviews'] = RentalListingReviews.objects.filter(RentalListing.lender = self.request.user)
        return context

Models.py

class RentalListing(models.Model):

    item_id = models.UUIDField(
        primary_key=True,
        default=uuid.uuid4,
        editable=False
    )
    lender = models.ForeignKey(
        get_user_model(),
        on_delete = models.CASCADE,
    )
    item_name = models.CharField(max_length=200)

    def __str__(self):
        return self.item_name

    def get_absolute_url(self):
        return reverse('rental_listing_detail', args=[str(self.item_id)])

class RentalListingReviews(models.Model):

    listing = models.ForeignKey(
        RentalListing,
        on_delete = models.PROTECT,
        related_name = 'listing_reviews',
    )
    review = models.TextField(max_length = 1000)
    author = models.ForeignKey(
        get_user_model(),
        on_delete = models.PROTECT,
    )

    def __str__(self):
        return self.review

    def get_absolute_url(self):
        return reverse('rental_listing_detail', args=[str(self.listing.item_id)])

Вы пытаетесь присвоить поле RentalListing в вызове функции.

context['reviews'] = RentalListingReviews.objects.filter(RentalListing.lender = self.request.user)

Должно быть ->

context['reviews'] = RentalListingReviews.objects.filter(lender = self.request.user)

Должно быть:

RentalListingReviews.objects.filter(listing__lender = self.request.user)
Вернуться на верх