Фильтры Django на нескольких моделях

Я новый пользователь django/python, и у меня возникла проблема с использованием django-filters со связанными моделями. Я создал для себя обучающее приложение с двумя моделями:

class Customer(models.Model):
    def __str__(self):
        return self.Customer_Name
    Customer_Name = models.CharField(max_length=100)
    SFDC_Customer_Record_Number = models.IntegerField(default='')
    Zone = models.CharField(max_length=50, default='')
    Government = models.BooleanField(default=False)
    date_posted = models.DateTimeField(default=timezone.now)
    author = models.ForeignKey(User, on_delete=models.DO_NOTHING,default=User)
    
class Vue_Quote(models.Model):
    def __str__(self):
        return self.Quote_Name
    Quote_Name = models.CharField(max_length=100)
    SFDC_Golden_Opp_ID = models.IntegerField()
    Vue_System_Count = models.IntegerField()
    date_posted = models.DateTimeField(default=timezone.now)
    author = models.ForeignKey(User, on_delete=models.DO_NOTHING,default=User)
    Quote_Type = models.CharField(max_length=100)
    Customer = models.ForeignKey(Customer , on_delete=models.DO_NOTHING, default='')

Я также создал файл filter.py:

import django_filters
from .models import *

class CustomerFilter(django_filters.FilterSet):

    class Meta:
        model = Customer
        fields = {
            'Customer_Name': ['icontains'], 
            'Zone' : ['icontains'],
        }


class QuoteFilter(django_filters.FilterSet):

    class Meta:
        model = Vue_Quote
        fields = {
            'Quote_Name': ['icontains'], 
            'author__username' : ['icontains'],
            'Customer__Customer_Name' : ['icontains'],
        }

В моих шаблонах я хочу отобразить поля фильтра для quoteFilter и customerFilter (это работает). Затем у меня есть своего рода галерея/список, который итеративно просматривает каждого клиента и его соответствующие котировки. Моя проблема в том, что работает только мой customerFilter. Я не могу найти способ создания вложенных циклов for, которые могут предоставить результаты для пользовательского ввода по обоим полям модели.

Вот мой текущий html, который работает для фильтра клиентов, но не пытается фильтровать содержимое цитаты вообще:

% extends "base.html" %}
{% load bootstrap %}
{% block content %}
<form method="get">
    {{customerFilter.form|bootstrap}}
    {{quoteFilter.form|bootstrap}}
    <button class= "btn btn-primary" type="submit">Search</button>
</form>
{% if user.is_authenticated %}
    <h2>Quote Explorer Gallery</h2>
        <p></p>
        {% for Customer in customerFilter.qs %}
            {% for Quote in Customer.vue_quote_set.all %}

<HTML WITH CONTENT CONTINUES HERE>

Вот мое мнение, если кому-то нужно его увидеть:

    Customers = Customer.objects.all()
    Quotes = Vue_Quote.objects.all().prefetch_related('Customer')
    customerFilter = CustomerFilter(request.GET, queryset=Customers)
    quoteFilter = QuoteFilter(request.GET, queryset=Quotes)
    context = {
        'Users': User.objects.all(),
        'Customers': customerFilter.qs,
        'Quotes': quoteFilter.qs,
        'customerFilter' : customerFilter,
        'quoteFilter' : quoteFilter,
    }
    print(context)
    return render(request, 'home.html', context)

Если кто-нибудь может подсказать, как я могу изменить мой вложенный цикл for, или как я могу по-другому решить проблему поиска по нескольким моделям, я буду очень благодарен. Спасибо.

Вернуться на верх