0
這裏選擇的數據是我的模型設計:從兩個層面深
class Group(models.Model):
name = models.CharField(max_length=30)
...
class User(models.Model):
name = models.CharField(max_length=50)
...
group = models.ForeignKey(Group)
class Photo(models.Model):
title = models.CharField(max_length=100)
...
user = models.ForeignKey(User)
我怎樣才能得到所有組的列表,下屬於屬於該組的用戶每組5個隨機的照片?
我想:
g = Group.objects.all()
for group in g:
r = Photo.objects.filter(user.group=group).order_by('?')[:5]
即贈送:
Django Version: 1.4.3
Exception Type: SyntaxError
Exception Value:
keyword can't be an expression (views.py, line 37)
Exception Location: /PATH/python2.7/site-packages/django/utils/importlib.py in import_module, line 35
Python Executable: /PATH/python
Python Version: 2.7.3
但即使我的代碼工作,我不相信這是理想的方法,因爲它會產生太多的疑問。
請幫忙。
謝謝,實際上固定關於過多查詢部分的錯誤,但什麼? –
哦,對不起 - 你說「太多的查詢」是什麼意思?這將會(應該)只執行一個查詢:'SELECT * FROM photo JOIN user ON ...,group ON ... WHERE group.id = group_id ORDER BY RANDOM()LIMIT 5',你可以看到使用以下命令生成的SQL: 'str(Photo.objets.filter(...).order_by(...)[:5])' –
哦,我明白了 - 你想按小組分組。在這種情況下,請參閱更新後的答案。 –