Python Django与用户的左联接表

Python Django与用户的左联接表,python,django,Python,Django,我正在使用PythonDjango开发一个系统,在这个系统中,我必须获取一个用户列表和他们的个人资料图片。我有一个包含用户照片的模型。用户可以上传多张照片,并且只能将其中一张照片设置为个人资料图片 这是我的照片模型 from django.contrib.auth.models import User class Photo(models.Model): image = models.FileField(upload_to='images') user = models.F

我正在使用PythonDjango开发一个系统,在这个系统中,我必须获取一个用户列表和他们的个人资料图片。我有一个包含用户照片的模型。用户可以上传多张照片,并且只能将其中一张照片设置为个人资料图片

这是我的照片模型

from django.contrib.auth.models import User  

class Photo(models.Model):
    image = models.FileField(upload_to='images')
    user = models.ForeignKey(User)
    is_main = models.BooleanField(default=False)
    date_added = models.DateTimeField(auto_now_add=True)
我想获取所有用户和每个用户的主要照片,如果他们有。类似于以下查询:

SELECT * FROM `users` `u` 
LEFT JOIN `photos` `p`
ON `u`.`id`=`p`.`user_id`
AND `p`.`is_main`=True
上述查询的Django ORM是什么?

使用自定义对象:


成功了。我无法访问模板中的main_photo列表,因此我必须通过将main_photo[0]重新分配给另一个变量的用户进行循环。谢谢。您可以通过
{{user.main\u photo.0}
访问它。如果你认为这是解决方案,请将问题标记为已接受。
photos = Prefetch('photo_set',
                  queryset=Photo.objects.filter(is_main=True),
                  to_attr='main_photo')
users = User.objects.all().prefetch_related(photos)
for user in users:
  # user.main_photo[0] contains the photo