Доступ к вложенным идентификаторам в Queryset Django Rest Framework

Как я могу получить доступ к category_id? Я хочу создать список похожих продуктов на основе категории. Поэтому каждый раз, когда я делаю запрос get, например products/1052/similarproducts, я хочу получить все ProductsInStore той же категории, что и ProductInStore(id=1052) и исключить ProductInStore(id=1052), мой текущий код дает мне "ecommerce.models.ProductInStore.DoesNotExist: ProductInStore, соответствующий запросу, не существует." Несмотря на то, что productInStore с номером 1052 существует.

class ProductInStore(models.Model):
    product = models.ForeignKey('Product', on_delete=models.CASCADE)
class Product(models.Model):
    name = models.CharField(max_length=200)
    product_category = models.ManyToManyField(EcommerceProductCategory)
class SimilarProductsListApiView(generics.ListAPIView):
    queryset = ProductInStore.objects.all()
    serializer_class = ProductInStoreSerializer

    #products/954/similarproductsr

    def get_queryset(self):
        product_id = self.kwargs['pk']
        category = ProductInStore.objects.values_list('product__product_category', flat=True).get(product_id=product_id)
        return ProductInStore.objects.filter(product__product_category=category).exclude(product_id=product_id).all()

Ваш product_id был id экземпляра ProductInStore, а не экземпляра Product, и поскольку их id, скорее всего, различаются, вы не смогли получить экземпляр

class SimilarProductsListApiView(generics.ListAPIView):
    queryset = ProductInStore.objects.all()
    serializer_class = ProductInStoreSerializer

    def get_queryset(self):
        product_in_store_id = self.kwargs['pk']
        category = ProductInStore.objects.get(id=product_in_store_id).product.product_category
        return ProductInStore.objects.filter(product__product_category=category).exclude(id=product_in_store_id)
Вернуться на верх