【发布时间】:2020-01-09 18:33:12
【问题描述】:
我有以下 .model 结构:
class ArtistWorkPlaceQuerySet(models.QuerySet):
def with_related(self):
return self.select_related('artist','work', 'place')
class ArtistWorkPlaceManager(models.Manager):
pass
class PersonWorkPlace(models.Model):
artist = models.ForeignKey(Artist, verbose_name=_('artist'), related_name='work', on_delete=models.CASCADE)
work = models.ForeignKey(Work, verbose_name=_('work'), related_name='place', on_delete=models.CASCADE)
place = models.ForeignKey(Place, verbose_name=_('place'), on_delete=models.CASCADE)
objects = PersonWorkPlaceManager.from_queryset(PersonWorkPlaceQuerySet)()
class Work(models.Model):
piece_type = models.CharField(max_length=100, null=True, blank=True) //This is like paintings or sculptures
class Artist(models.Model):
name = models.CharField(max_length=100)
class Place(models.Model):
name = models.CharField(max_length=200, null=True, blank=True)
通过这个查询我可以得到这个艺术家的所有作品:
works = PersonWorkPlace.objects.filter(person=self.kwargs['pk'])
如何进一步搜索同一艺术家在特定地点的相同“piece_type”作品的数量(计数)?
我想为特定视图传递或从上下文中提取以下信息:
艺术家 A 在 Place A 有 2 幅画和 2 幅雕塑,在 Place B 有 4 幅画
'context': {(地点:'地点 A',绘画:'2',雕塑:'2'),(地点:'地点 B',绘画:'4')}
【问题讨论】:
标签: django django-models django-queryset django-aggregation django-annotate