Django - Фильтрация списков с использованием внешнего ключа внутри внешнего ключа

Я могу отфильтровать список бронирований из "жилья", используя ForeignKey "Housing"

Но мне нужно сделать это на основе h_type, который использует ForeignKey "HousingType"

Я не уверен в правильности терминологии, но я думаю, что пытаюсь использовать ForeignKey внутри ForeignKey, не уверен, как этого добиться в представлении.

models.py

class HousingType(models.Model):

    name = models.CharField(max_length=254)
    friendly_name = models.CharField(max_length=254, null=True, blank=True)

class Housing(models.Model):

    h_type = models.ForeignKey('HousingType', null=True, blank=True, on_delete=models.SET_NULL)

class Booking(models.Model):

    housing = models.ForeignKey('Housing', null=True, blank=True, on_delete=models.SET_NULL)

views.py

def view_bookings(request):

    housing = Housing.objects.all()
    bookings = Booking.objects.all()

    if request.GET:
        if 'housing_type' in request.GET:
            h_types = request.GET['housing_type'].split(',')
            bookings = bookings.filter(housing_type__name__in=h_types)
            h_types = HousingType.objects.filter(name__in=h_types)

html шаблон

<a href="{% url 'view_bookings' %}?housing_type=apartments">Apartments</a>

Вы можете .filter(…) [Django-doc] с:

Booking.objects.filter(housing__h_type__name__in=h_types)

или если вы используете friendly_name:

Booking.objects.filter(housing__h_type__friendly_name__in=h_types)
Вернуться на верх