逆多対多ルックアップに関する投稿をフォローアップして、プロジェクト/画像の問題のベストプラクティスは何だろうと思っていました:
多数のプロジェクトを登録したいのですが、ユーザーは複数のプロジェクト画像をアップロードできます (必須ではありません)。
したがって、次の 2 つのクラスを定義しました。
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)
名前などを含むプロジェクトのリストを返します。
ここで、プロジェクトの写真をダッシュボード テーブルに表示したいと思います。したがって、アドバイスを求めている2つの質問があります。
1) クラスのセットアップは実際にそれを行うための最良の方法ですか? 上記のようにクラスを分割して、ユーザーがプロジェクトごとに複数の写真をアップロードできるようにします。それを行うためのより良い方法はありますか?
2) 画像が利用可能な場合、プロジェクトの最初の画像をテンプレートに表示するにはどうすればよいですか? プロジェクトに対応するすべての ProjectPicture オブジェクトに対してクエリを作成する必要がありますか? または、その問題に対するエレガントな Django ソリューションはありますか?