2016-11-16 82 views
0

我想用Django的ORM做一个简单的组。集团通过Django的ORM

SELECT * FROM user AS u JOIN user_photo AS up WHERE u.`user_id` = up.`user_id` GROUP BY up.`user_id`; 

结构user_photo: id |照片| user_id

结构用户: ID |名称|状态|描述|付款| user_id说明

我有用户的照片,网友上传到数据库中另一个表。 我可以拉从用户的信息,但我只想要一个和最后一张照片,用户从用户的照片表上载。

我想通过组,由我场不使用像计数,最大值,最小值,平均值任何模型功能等

任何人都可以帮助吗?

+0

我不能使用计数模式的功能,我并不想算什么,只是由小组,由我的id字段从另一个表跳过重复的行 – Storm

+0

你要问,你只需要拉的最后一张照片为每个用户提交? –

+0

我需要从一个表拉用户,其他表与用户上传的照片,我只是想从这张照片表中的最后一个用户的照片在搜索视图中显示,明白了吗? – Storm

回答

0

从技术上讲,你使用.group_by()做GROUP BY,但它不完全是你要找的。

您可以使用预取相关的ORM实现您的目标。

预取对象允许您使用ORM进行各种查找。

你的情况:

User.objects.prefetch_related(
    Prefetch(
     'photos', 
     queryset=Photo.objects.last(), 
    ) 
) 

其中 '照片' 是你related_name或者默认 'photo_set'。另外,.last()方法可以被您选择的.order_by()替换。

请注意,它与SQL示例的不同之处在于预取将执行附加查询而不是JOIN。