Фильтр django __contains не возвращает значения для списка, в то время как __in возвращает.

am essentially trying to perform a select * from xyxtable where col like '%value%' on a list of alphanumeric values from another dataframe column(prev_df['VendorPartNumber]. I thought the filter __contains= should do the trick. but this returns nothing

product_df=pd.DataFrame(Product.objects.filter(legacy_productid__contains=prev_df['VendorPartNumber']).values('id','legacy_productid'))

В любом случае, использование __in для фильтрации работает (просто результат не тот, который я хочу, поскольку __in проверяет равенство)

product_df=pd.DataFrame(Product.objects.filter(legacy_productid__in=prev_df['VendorPartNumber']).values('id','legacy_productid'))

Я попробовал несколько способов, таких как

     product_df= Product.objects.all()
        for search_term in perv_df['VendorPartNumber']:
            product_df = product_df.filter(legacy_productid__contains=search_term)

или

        product_df=pd.DataFrame(Product.objects.filter(reduce(operator.and_, (Q(legacy_productid__contains=x) for x in prev_df['VendorPartNumber']))).values('id','legacy_productid'))

что я упускаю?

Предполагаю, что вы хотите получить id из legacy_product.

В этом случае вы должны сделать legacy_product_id__contains='foobar'.

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