0
我需要Django註釋幫助。我有一個叫做Photo
的Django數據模型,另一個叫PhotoStream
(一個PhotoStream最後可以有很多照片 - 詳細模型)。我通過以下方式獲取最新的200張照片:Photo.objects.order_by('-id')[:200]
在Django查詢集中使用註釋
對於上述查詢集中的每個對象,我想註釋所有相關照片的計數。相關照片是(i)來自同一PhotoStream,(ii)其時間戳小於或等於所述對象的時間戳的相關照片。
換句話說:
for obj in context["object_list"]:
count = Photo.objects.filter(which_stream=obj.which_stream).order_by('-upload_time').exclude(upload_time__gt=obj.upload_time).count()
我是新來的這一點,似乎並不能對上述翻譯for循環進入查詢集註釋。任何幫助?
這裏的photo
和photostream
數據模型與相關領域:
class Photo(models.Model):
owner = models.ForeignKey(User)
which_stream = models.ForeignKey(PhotoStream)
image_file = models.ImageField(upload_to=upload_photo_to_location, storage=OverwriteStorage())
upload_time = models.DateTimeField(auto_now_add=True, db_index=True)
class PhotoStream(models.Model):
stream_cover = models.ForeignKey(Photo)
children_count = models.IntegerField(default=1)
creation_time = models.DateTimeField(auto_now_add=True)
到目前爲止,我的嘗試是:
Photo.objects.order_by('-id').annotate(num_related_photos=Count('which_stream__photo__upload_time__lte=F('upload_time')))[:200]
給出一個無效的語法錯誤。
而下面的作品,但不迎合我的時間戳相關要求(ii)項:
Photo.objects.order_by('-id').annotate(num_related_photos=Count('which_stream__photo'))[:200]