0

我正在构建音乐应用程序,用户可以在其中执行多项任务,包括但不限于听歌、喜欢歌曲、向朋友推荐歌曲等等。目前我有这个模型:

class Activity(models.Model):
    activity = models.TextField()
    user = models.ForeignKey(User)
    date = models.DateTimeField(auto_now=True)

到目前为止,我想到了两种解决方案。1. 将字符串保存到数据库。例如“你听过歌曲 xyz”。2. 创建关于活动的字典并使用 pickle 或 json 保存到数据库。

例如

dict_ = {"activity_type":"listening", "song":song_obj}

我倾向于第二个实现,但不太确定。

那么您如何看待这两种方法?你知道实现目标的更好方法吗?

4

2 回答 2

0

看起来您只需要一个枚举来匹配数据库中的表。

因此,在您的 UserActivity 表中,您将拥有用户 ID、活动 ID、歌曲 ID、日期时间等

于 2010-05-13T00:50:29.740 回答
0

GenericForeignKey呢?你可以有userid,activityid并且content_object在你的UserActivitywherecontent_object是一首歌、一个用户或完全不同的东西。

content_type = models.ForeignKey(ContentType)
object_id = models.PositiveIntegerField()
content_object = generic.GenericForeignKey('content_type', 'object_id')
于 2010-05-13T00:57:39.820 回答