1

我有一个图像上传模型,看起来像这样:

from django.db import models
from django.contrib.auth.models import User
import datetime

class ImageItem(models.Model):
    user = models.ForeignKey(User)
    upload_date = models.DateTimeField(auto_now_add = True)
    last_modified = models.DateTimeField(auto_now = True)
    original_img = models.ImageField(upload_to = img_get_file_path)

我想查询属于特定用户的所有 ImageItem 实例,并根据上传日期对它们进行分组。例如,对于某些用户,我想要一个 2013 年 4 月 9 日的组,另一个 2013 年 4 月 12 日的组,等等(假设他们在这些日期上传了一张或多张图片)。

我在想我运行一个简单的查询,比如,

joes_images = ImageItem.objects.filter(user__username='joe')

但是,我怎么能按发布的日期对它们进行分组呢?(假设他不是每天都发布,只是在某些日子)

该函数必须返回所有图像组。

4

1 回答 1

4

你为什么不做如下?

joes_images = ImageItem.objects.filter(user__username='joe')  # your code
upload_dates = set([(i.year, i.month, i.day) for i in joes_images])  # set of upload_date
joes_images_separated = dict([(d, []) for d in upload_dates])
for d in upload_dates:
    for i in joes_images:
        if (i.year, i.month, i.day) == d:
            joes_images_separated[d].append(i)

在这里,upload_dates是一组日期joes_images,你得到joes_images_separated一个字典(键是日期,值是joes_images每个日期的列表)。

我很抱歉代码有点脏。我认为这行得通。供你参考。

于 2013-04-13T11:41:10.177 回答