我正在构建音乐应用程序,用户可以在其中执行多项任务,包括但不限于听歌,如歌曲,向朋友推荐歌曲和额外的。 目前我有这个型号:
class Activity(models.Model):
activity = models.TextField()
user = models.ForeignKey(User)
date = models.DateTimeField(auto_now=True)
到目前为止,我想到了两个解决方案。
1.将字符串保存到数据库。例如“你听过歌xyz”。
2.创建一个关于活动的字典,并使用pickle或json保存到数据库。
e.g。
dict_ = {"activity_type":"listening", "song":song_obj}
我倾向于第二次实施,但不太确定。
那你怎么看待这两种方法呢?你知道更好的方法来实现目标吗?
答案 0 :(得分:0)
看起来您只需要一个枚举来匹配数据库中的表。
因此,在您的UserActivity表中,您将拥有 userid,activityid,songid,datetime等等
答案 1 :(得分:0)
GenericForeignKey怎么样?您可以在userid
上activityid
,content_object
和UserActivity
,其中content_object
是一首歌,一个用户或完全不同的用户。
content_type = models.ForeignKey(ContentType)
object_id = models.PositiveIntegerField()
content_object = generic.GenericForeignKey('content_type', 'object_id')