rol*_*one 22 django django-queryset
我的Django应用程序中有以下(简化)模型:
class Color(models.Model):
name = models.CharField(max_length=10)
class Item(models.Model):
name = models.CharField(max_length=200)
color = models.ForeignKey(Color, blank=True, null=True)
class Favorite(models.Model):
user = models.ForeignKey(User)
item = models.ForeignKey(Item)
Run Code Online (Sandbox Code Playgroud)
我目前正在使用以下查询获取所需的所有项目:
favorites = Favorite.objects.filter(user=request.user)
Run Code Online (Sandbox Code Playgroud)
如何获得该项中所有不同颜色的颜色QuerySet?
我需要一个实际颜色对象的列表,而不仅仅是我可以使用的颜色ID
favorites.values_list('item__color').distinct
Run Code Online (Sandbox Code Playgroud)
Joh*_*yes 37
如果我理解正确,以下应该可以解决问题:
favorites = Favorite.objects.filter(user=request.user)
color_ids = favorites.values_list('item__color', flat=True).distinct()
colors = Color.objects.filter(id__in=color_ids)
Run Code Online (Sandbox Code Playgroud)
必须有一个比这更清洁的方式.
编辑:更清洁的解决方案:
colors = Color.objects.filter(item__favorite__user=request.user).distinct()
Run Code Online (Sandbox Code Playgroud)
小智 7
你可以做:
favorites = Favorite.objects.filter(user=request.user).distinct('item__color')
Run Code Online (Sandbox Code Playgroud)
你可以做:
Color.objects.filter(item__favorite__user = request.user).distinct()
Run Code Online (Sandbox Code Playgroud)
related_name如果这些不是默认值,您可能必须在外键上设置一些s(我永远不会记住默认值).
| 归档时间: |
|
| 查看次数: |
25651 次 |
| 最近记录: |