Django model.objects.filter не работает должным образом

Итак, я пытаюсь использовать следующее:

def get_queryset(self, *args, **kwargs):
        return OrderItem.objects.filter(order_id=self.kwargs['pk'])

Чтобы выполнить поиск OrderItem по объектам и вернуть только те, которые связаны с указанным порядком по order_id.

Однако, используя панель инструментов Django debug_toolbar, я могу видеть, что делает sql-запрос, и он делает следующее:

SELECT "littlelemonAPI_orderitem"."id",
       "littlelemonAPI_orderitem"."order_id",
       "littlelemonAPI_orderitem"."menuitem_id",
       "littlelemonAPI_orderitem"."quantity"
  FROM "littlelemonAPI_orderitem"
 WHERE ("littlelemonAPI_orderitem"."order_id" = 2 AND "littlelemonAPI_orderitem"."id" = 2)
 LIMIT 21

В данном случае я передал 2 в качестве PK в конечной точке API, но я не понимаю, почему он ищет по id, когда я хочу, чтобы он искал только по order_id.

Это таблицы моей базы данных: enter image description here enter image description here

Также вот как определяются эти две модели:

class Order(models.Model):
    user = models.ForeignKey(User, on_delete=models.CASCADE)
    delivery_crew = models.ForeignKey(User,on_delete=models.SET_NULL,related_name='delivery_crew',null=True)
    status = models.BooleanField(db_index=True, default=0)
    total = models.DecimalField(max_digits=6,decimal_places=2)
    date = models.DateField(db_index=True,auto_now_add=True)
    
    def __str__(self):
        return f"{self.id}"

class OrderItem(models.Model):
    order = models.ForeignKey(Order, on_delete=models.CASCADEAlso)
    menuitem = models.ForeignKey(MenuItem,on_delete=models.CASCADE)
    quantity = models.SmallIntegerField()
    
    class Meta:
        unique_together = ('order','menuitem')
    
    def __str__(self):
        return f"{self.order_id}"

А вот сериализаторы, которые я использую и буду использовать, но я не уверен, как они могут вызвать эту проблему:

class OrderSerialzier(serializers.ModelSerializer):
    user = UserSerializer
    class Meta:
        model = Order
        fields = ['id','user','total','status','delivery_crew','date']
    
class OrderItemHelperSerialzier(serializers.ModelSerializer):
    class Meta:
        model = MenuItem
        fields = ['title','price']
        
class OrderItemSerializer(serializers.ModelSerializer):
    menuitem = OrderItemHelperSerialzier
    class Meta:
        model = OrderItem
        fields = ['menuitem','quantity']
        depth =1 

class OrderAddSerializer(serializers.ModelSerializer):
    class Meta:
        medel =Order
        fields = ['delivery_crew']

Я больше ничего не устал, потому что не могу найти ничего об этом вопросе в Интернете.

Я думаю, что в приведенном вами коде нет никаких проблем. SQL-запрос, который вы взяли из панели инструментов, является результатом метода "get", используемого в действии "retrieve" в вашем представлении. Поэтому итоговый набор запросов выглядит следующим образом: OrderItem.objects.filter(order_id=self.kwargs['pk']).get(pk=<lookup_value>)

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