Как фильтровать ManyToMany по ForeignKey?

Не могу понять как сделать отображение доступных к покупке сервисных наборов основываясь на уже купленных оборудованиях.

Допустим пользователь купил оборудование и после этого ему открываются к покупке сервисные наборы для данного оборудования. Сервисный набор по ManyToMany может принадлежать к нескольким оборудованиям из базы товаров и имеет по 3 набора к ним. Уже купленные товары привязываются ForeignKey к базе товаров, пользователь может несколько раз купить один и тоже товар

class Storage(models.Model):
    name = models.CharField('Наименование', max_length=100)
    desc = models.TextField('Описание')
    ...

    def __str__(self):
        return self.name

    class Meta:
        verbose_name = 'База товаров'

class Orders(models.Model):
    equipment = models.ForeignKey(Storage, on_delete=models.CASCADE)
    user = models.ForeignKey(User, on_delete=models.CASCADE,)
    ...

    def __str__(self):
        return self.id

    class Meta:
        verbose_name = 'Покупки'

class ServiceKit(models.Model):
    name = models.CharField('Наименование', max_length=100)
    equipments = models.ManyToManyField(Storage)
    ...

    def __str__(self):
        return self.name

    class Meta:
        verbose_name = 'Сервисные наборы'

    # Пытаюсь так, но выводит наборы подходящие к последнему купленному оборудованию
    for i in Orders.objects.filter(user=request.user):
        view = Kit.objects.filter(sklad=i.name.id)
  • Вопрос задан
  • 42 просмотра
Решения вопроса 1
@bacon
За время пока ждешь ответа, давно бы бы освоил чтение доков. Всегда можно делать вложенные запросы вида
ServiceKit.objects.filter(equipments=Orders.objects.filter(user=request.user).values('equipment'))
рабочий ли он в твоем случае, хз, лень разбираться в логике твоих связей, просто показываю как можно.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы