如何使用子对象的属性django-filter搜索父对象

问题描述 投票:0回答:1

Context:我有一个带有很多度量(内部,外部等)的方位,但是每个品牌在相同的方位(相同的度量组合)上都标记了一个数字,称为“等效”。因此,一个轴承可以有一个,无或多个等价物。像这样的东西:

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 hereenter 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-filter在这种情况下不好,我不知道

python django django-filter
1个回答
0
投票

[嗨,我对此问题有点困惑。目标是什么?如果要过滤在某些字段中具有相同值的对象,则无需其他等效模型,例如,如果您具有“帖子”模型,并且想要具有相同标题和相同发布日期的帖子:

eq_posts = Post.objects.filter(title=my_title, published=datetime.strptime('Jun 1 2005 ', '%b %d %Y'))

对于任何字段,都可以进行过滤,但也请查看Django queryset doc中的“注释”。您可以将过滤器放置在所需的任何字段上,并使每个对象的查询集具有相同的值。

© www.soinside.com 2019 - 2024. All rights reserved.