как искать родительский объект, используя атрибут дочернего объекта, django -фильтр - PullRequest
0 голосов
/ 23 февраля 2020

Контекст: У меня есть Подшипник с большим количеством измерений (внутренняя, внешняя и т. Д. c), но каждая марка ставит номер на тот же самый Подшипник (ту же комбинацию измерений), который называется «Эквивалент». поэтому подшипник может иметь один, ни один из множества эквивалентов. Примерно так:

BD Model

Теперь я хочу отфильтровать информацию по всем атрибутам подшипников, но также по эквивалентному номеру SQL Пример:

select * from bearing where (any atribute of bearing) = x;

, но также можно сделать это

select * from bearing inner join equivalent where equivalent.number = x; 

У меня есть искатель, подобный этому:

enter image description here enter image description here

filters.py:

class BearingFilter(django_filters.FilterSet):
    class Meta:
        model = Bearing
        fields = [
            'D_INT_A',
            'D_INT_A1',
            'D_EXT_D',
            'D_EXT_D1',
            'D_ESP_B',
            'D_ESP_C',
            'D_ESP_T',
            'N_PARTE_1',
            'N_PARTE_2',
            'FK_TIPO_ROD',
        ]

views.py:

def searcher(request):
    list_Bearing = Bearing.objects.all()
    list_Equiv = Equivalent.objects.all()
    list_Bearing_filter = BearingFilter(request.GET, queryset=list_Bearing)
    return render(request, 'searcher.html', {'equiv': list_Equiv , 'bearing_filter' : list_Bearing_filter })

html выглядит примерно так:

for x in bearing_filter.qs 

    Row with Bearing Info


        Modal With Equivalent info

        for y in equiv
            if x.id = y.Bearing_fk 

                y.Number - y.Brand

            endif
        endFor
endfor

Я все еще учусь django + python, и я не знаю, как к этому подойти. Может быть, django -фильтр не подходит в этом случае, я не знаю

...