python - 如何过滤具有通过外键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)
解决方案
您的查询集将始终返回两个模型中的所有对象。您可以简单地将代码更改为,
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)
推荐阅读
- html - 打字机效果,光标走到屏幕末尾,然后自行修复
- c# - ASP.NET MVC AllowAnonymous 不工作
- php - laravel 模型事件多次调用
- django - Django - 打印所有对象属性值
- r - 将 rJava 加载到 R 和 RStudio 时遇到问题
- python - SQLAlchemy:关于构建树的问题?
- tensorflow - 使用 TPU 的 TensorFlow 对象检测训练错误
- docker - 在 kubernetes 中部署启用 https 的 Spring Boot Rest 服务
- mysql - 用左连接连接值
- android - 抽象导航抽屉 Android