Django中模拟微博timeline
相信大家都用过微博,我们在微博的timeline中,常常可以看到文字、音乐、视频等等的混合。所有的内容都聚合在一起显示出来。具体的实现未可知,但是在Django中,我们有比较优雅的方式。那就是使用contenttypes模块来实现。
现在我们假设对于一条微博只有三种方式(其他的很容易拓展):文本,音乐以及视频。我们先定义三个简单的Model。(注意到Music和Video只要简单继承Tweet类即可。)
from django.db import models from django.contrib.auth.models import User class Tweet(models.Model): user = models.ForeignKey(User) # 这里就用Django自带的User content = models.CharField(max_length=140) # 内容,最多140字 pic_url = models.URLField(null=True, blank=True) created = models.DateTimeField(auto_now_add=True) class Meta: ordering = ['-created',] def __unicode__(self): return self.content class Music(Tweet): music_url = models.URLField(verify_exists=False) class Video(Tweet): video_url = models.URLField(verify_exists=False)