Я использую библиотеку Django-Filter.
У меня есть 2 модели, Listing
и ListingReview
. Я хотел бы иметь возможность создать фильтр для модели ListingReview, чтобы люди могли выбирать, для какого Листинга они хотят видеть обзоры.
# models.py:
class Listing(models.Model):
posted_by = models.ForeignKey('auth.User', related_name='listings', on_delete=models.CASCADE)
class ListingReview(models.Model)
listing = models.ForeignKey(Listing, on_delete=models.CASCADE, related_name='listing_reviews')
# filters.py
def listings(request):
# if request is None:
# return Listing.objects.none()
return Listing.objects.filter(posted_by=request.user)
class ListingReviewFilter(django_filters.FilterSet):
listing = django_filters.ModelChoiceFilter(
name='listing', lookup_expr='isnull',
empty_label='All listings',
queryset=listings,
)
class Meta:
model = ListingReview
fields = ['listing']
Однако я не понимаю, почему request is None
, я получаю:
Объект 'NoneType' не имеет атрибута 'user'
Что мне нужно:
Для заданного user
найдите связанные листинги с помощью: Listing.objects.filter(posted_by=user)
и передайте его параметру queryset
в фильтре, например, динамически определять набор запросов на основе текущего пользователя. Поскольку каждый пользователь владеет различным набором списков.