继关于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)
因此,对于每个用户,我将通过在“仪表板”中显示他们的项目
^{pr2}$它返回带有名称等的项目列表
现在我想在仪表板表中显示项目的图片。因此,我有两个问题需要咨询:
1)课程设置实际上是最好的方法吗?我拆分了上面所示的类,允许用户在每个项目中上传不止一张图片。有更好的方法吗?在
2)如果有图片,如何在模板中显示项目的第一张图片?我需要对每个项目对应的ProjectPicture对象进行查询吗?或者有一个优雅的Django解决方案来解决这个问题?在
不是多对多关系,你用外键。这是正常的设置。要访问模板中的第一张图片,您可以使用
{{ project.projectpicture_set.all.0 }}
,它将生成额外的查询。要避免它,请使用prefetch_related。在相关问题 更多 >
编程相关推荐