首页 > 解决方案 > 如何过滤具有通过外键django链接到它们的产品的组

问题描述

我正在尝试过滤与产品之间共享外键的产品匹配的组,外键是从产品中设置的。我做得对,但我相信有一种更简单、更好的方法来做到这一点。

视图.py

def shop(request, shop_url):
    products = Product.objects.all()
    groups = None
    for product in products:
        groups = Group.objects.filter(id=product.item_group.id)
    context = {
        'products' : products,
        'groups' : groups,
    }
    return render(request, 'shop/shop.html', context)

模型.py

class Product(models.Model):
    name = models.CharField(max_length=100)
    item_group = models.ForeignKey('Group', on_delete=models.CASCADE)

class Group(models.Model):
    name = models.CharField(max_length=200)
    def __str__(self):
        return str(self.name)

标签: pythondjangodjango-modelsdjango-views

解决方案


您的查询集将始终返回两个模型中的所有对象。您可以简单地将代码更改为,

def shop(request, shop_url):
    products = Product.objects.all()
    groups = Group.objects.all()

    context = {
        'products' : products,
        'groups' : groups,
    }
    return render(request, 'shop/shop.html', context)

推荐阅读