跟进有关reversed many-to-many look ups的帖子,我想知道我的项目/图片问题的最佳实践是什么:
我想注册多个项目,用户可以上传(但不是必需)多个项目图片。
因此我定义了以下两个类:
from easy_thumbnails.fields import ThumbnailerImageField
class Project(models.Model):
name = models.CharField(_('Title'), max_length=100,)
user = models.ForeignKey(User, verbose_name=_('user'),)
...
class ProjectPicture(models.Model):
project = models.ForeignKey('Project')
picture = ThumbnailerImageField(_('Image'),
upload_to='user/project_pictures/', null=True, blank=True,)
def __unicode__(self):
return u'%s\'s pictures' % (self.project.name)
因此,对于每个用户,我通过
在“仪表板”中显示他们的项目projects = Project.objects.filter(user = logged_user)
它返回包含名称等的项目列表
现在我想在仪表板表中显示项目的图片。因此我有两个问题正在寻求建议:
1) 类(class)设置实际上是最好的方法吗?我将类分开,如上所示,以允许用户为每个项目上传多张图片。有更好的方法吗?
2) 如果有图片,如何在模板中显示项目的第一张图片?我是否需要对与项目对应的每个 ProjectPicture 对象进行查询?或者有一个优雅的 Django 解决方案可以解决这个问题吗?
最佳答案
这不是多对多关系,您使用外键。这是正常设置。要访问模板中的第一张图片,您可以使用 {{ project.projectpicture_set.all.0 }}
,它将生成额外的查询。为了避免它使用 prefetch_related .
关于python - Django:在模板中访问多对多(反向),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14373193/