фильтрация данных во многих во многие области с использованием нескольких фильтров и моделей в django - PullRequest
0 голосов
/ 20 января 2020

models .py

class ShopProfile(models.Model):
    restaurant_name = models.CharField(max_length=100, blank=True)
    slug = models.SlugField(max_length=140, unique=True)
    related_user = models.ForeignKey(User, on_delete=models.CASCADE)

class Item(models.Model):
    title = models.CharField(max_length=100)
    price = models.FloatField()
    created_by = models.ForeignKey(ShopProfile, on_delete=models.CASCADE)

class OrderItem(models.Model):
    user = models.ForeignKey(User,on_delete=models.CASCADE)
    ordered = models.BooleanField(default=False)
    item = models.ForeignKey(Item, on_delete=models.CASCADE)
    quantity = models.IntegerField(default=1)

class Order(models.Model):
    user = models.ForeignKey(User,on_delete=models.CASCADE)
    items = models.ManyToManyField(OrderItem)
    total = models.FloatField(blank=True, null=True)

views.py

class InComingOders(TemplateView):
    template_name = 'shop/incoming.html'
    model = Order

    def get_context_data(self, **kwargs):
        context = super(InComingOders, self).get_context_data(**kwargs)
        context['list_orders'] = Order.objects.filter(
                items=(OrderItem.objects.filter(
                    item=(Item.objects.filter(
                       created_by =created_by=ShopProfile.objects.get(related_user=self.request.user))))))
        return context

Мне нужно получить все заказы, соответствующие каждому магазину, связав поле созданные_by в профиле магазина. если клиент размещает заказ, то этот товар, созданный по профилю магазина, должен отображаться в магазине

1 Ответ

2 голосов
/ 20 января 2020

Просто, что-то вроде этого,

list_orders = Order.objects.filter(items__item__created_by=self.request.user)
#views.py
class InComingOders(TemplateView):
    ...

    def get_context_data(self, **kwargs):
        context = super(InComingOders, self).get_context_data(**kwargs)
        <b>context['list_orders'] = Order.objects.filter(items__item__created_by=self.request.user)</b>
        return context

Для получения более подробной информации см. Поиски, которые охватывают отношения - (Django -Do c)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...