В Django, когда вы вызываете метод objects.filter
на модели, это означает, что вы пытаетесь фильтровать объекты этой модели, что применимо к модели, но не к самой модели-промежуточной через Many-to-Many или ForeignKey связь.
Таким образом, проблема, связанная с вашим вопросом, может быть связана с тем, что модель ProductInOrder
не определена с атрибутом objects
, или у нее нет менеджера по умолчанию.
Чтобы использовать фильтрацию на модели через промежуточные связанные объекты, вам необходимо явно указать связь в вашем запросе. Например, если у вас есть связь между моделями Order
и Product
через модель ProductInOrder
, и вы хотите фильтровать объекты ProductInOrder
, связанные с определенным заказом, вам нужно будет сначала получить экземпляр заказа, а затем использовать обратное имя связи для фильтрации промежуточной модели.
Например, если у вас есть модели:
class Order(models.Model): # поля модели Order class Product(models.Model): # поля модели Product orders = models.ManyToManyField(Order, through='ProductInOrder') class ProductInOrder(models.Model): order = models.ForeignKey(Order, on_delete=models.CASCADE) product = models.ForeignKey(Product, on_delete=models.CASCADE) # дополнительные поля
Тогда для фильтрации объектов ProductInOrder
связанных с определенным заказом, вам нужно сначала получить экземпляр заказа и применить обратный запрос:
order = Order.objects.get(pk=1) product_in_order_items = ProductInOrder.objects.filter(order=order)
Таким образом, Django не видит метод objects.filter
над ProductInOrder
, потому что это применимо только к объектам модели, а связанные объекты через промежуточные модели требуют явного указания связи при фильтрации.