3. 如何建立多对多的模型关系?¶
多对多的模型关系指当一个数据表中的父级行包含第二表中的多个子行且反之亦然的表与表之间的关系。
为了更好的互动性,我们将聊聊twitter应用。仅仅使用一些字段和多对多关系,我们可以生成一个简单的twitter应用。
基本上我们的推特由三个基础构成,推文,粉丝,喜欢/不喜欢。
我们只要两个模型类就能让这一切工作。我们继承了Django的auth_user。
class User(AbstractUser):
tweet = models.ManyToManyField(Tweet, blank=True)
follower = models.ManyToManyField(settings.AUTH_USER_MODEL, blank=True)
pass
class Tweet(models.Model):
tweet = models.TextField()
favourite = models.ManyToManyField(settings.AUTH_USER_MODEL, blank=True, related_name='user_favourite')
def __unicode__(self):
return self.tweet
以上的模型能做些什么呢?
1)用户可以关注或取关其他用户。
2)用户可以他关注的用户的推文。
3)用户可以喜欢/不喜欢其他人的推文。
使用ManyToManyfield可以完成的部分操作:
我们新建了一些推文和用户,到目前为止还没有涉及任何多对多关系的使用。我们继续在下一步将他们联系起来。
工作实例可以在这个仓库找到: https://github.com/yashrastogi16/simpletwitter