我有一个图片上传模型,看起来像这样:
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')
但是,我怎么能在发布日之前对它们进行分组?(假设他没有每天发布,只在某些日子发布)
该功能必须返回所有图像组。
答案 0 :(得分: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
的列表)
我很抱歉有点脏代码。我觉得这很有效。供您参考。