我的django里有一张桌子:
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)
用户可以发布phtoto,他们也可以喜欢照片,但是我不知道如何在phtoto里写,我应该用一对多还是多对多?你知道吗
我怎样才能让用户喜欢照片。你知道吗
谢谢你的帮助。你知道吗
更新
最后,我决定使用一个多对多的直通模型,因为我也想记录时间。我选定的型号是这些
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'
你只需要想想照片是如何被喜欢的。你知道吗
一个用户能喜欢很多照片吗?你知道吗
一个用户能喜欢多张照片吗?你知道吗
那就是多对多了。你知道吗
你可以这样实现它
然后,它是这样工作的,你可以通过
通过这种方式访问像照片这样的内容
获取用户喜欢的所有照片
相关问题 更多 >
编程相关推荐