私は私のジャンゴにこのテーブルを持っています:
class User(models.Model):
username = models.CharField(max_length=40)
class Photo(models.Model):
publish_by = models.ForeignKey(User)
name = models.CharField(max_length=40)
desc = models.CharField(max_length=40)
ユーザーは写真を公開することができ、彼らは写真を気に入ることができます。しかし、私は写真に好きなものを書く方法がわかりません。
Photo が好きなユーザーを取得するにはどうすればよいですか。
手伝ってくれてありがとう 。
アップデート
結局、時間も記録したかったので、スルー モデルで多対多を使用することにしました。私が落ち着いたモデルはこれらです
class User(models.Model):
username = models.CharField(max_length=40)
class Photo(Model):
author = models.ForeignKey(User, related_name='%(class)ss')
publish_time = models.DateTimeField(default=datetime.datetime.now)
liked_by = models.ManyToManyField(User, related_name="likes",through='PhotoLike',)
def like(self, user):
liked, created = PhotoLike.objects.get_or_create(photo=self,user=user)
return liked
def save(self, *args, **kwargs):
super(Photo, self).save(*args, **kwargs)
class Meta:
app_label = 'meinv'
class PhotoLike(models.Model):
user = models.ForeignKey(User)
photo = models.ForeignKey(Photo)
like_time = models.DateTimeField(default=datetime.datetime.now)
class Meta:
app_label = 'meinv'