设计问题?
我正在构建音乐应用程序,用户可以在其中执行多项任务,包括但不限于听歌曲、喜欢歌曲、向朋友推荐歌曲等等。 目前我有这个模型:
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}
我倾向于第二种实现,但不太确定。
那么您对这两种方法有何看法?你知道实现目标的更好方法吗?
I am building music app, where user can do several tasks including but not limited to listening song, like song, recommend song to a friend and extra.
currently I have this model:
class Activity(models.Model):
activity = models.TextField()
user = models.ForeignKey(User)
date = models.DateTimeField(auto_now=True)
so far I thought about two solutions.
1. saving a string to database. e.g "you listened song xyz".
2. create a dictionary about the activity and save to the database using pickle or json.
e.g.
dict_ = {"activity_type":"listening", "song":song_obj}
I am leaning to the second implementation, but not quite sure.
so what do you think about those two methods? do you know better way to achieve the goal?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
看起来您所需要的只是一个与数据库中的表相匹配的枚举。
所以在你的 UserActivity 表中,你将有
用户ID、活动ID、歌曲ID、日期时间等
Looks like all you need is an enumeration to match a table in your database.
So in your UserActivity table, you will have
userid, activityid, songid, datetime etc etc
GenericForeignKey 怎么样?您可以在
UserActivity
上拥有userid
、activityid
和content_object
,其中content_object
是歌曲、用户或完全不同的东西。What about GenericForeignKey? You could have
userid
,activityid
andcontent_object
on yourUserActivity
wherecontent_object
is a song, an user or something completely different.