设计问题?

发布于 2024-09-01 12:28:29 字数 486 浏览 5 评论 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}

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

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

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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

舟遥客 2024-09-08 12:28:29

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

所以在你的 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

弥枳 2024-09-08 12:28:29

GenericForeignKey 怎么样?您可以在 UserActivity 上拥有 useridactivityidcontent_object,其中 content_object 是歌曲、用户或完全不同的东西。

content_type = models.ForeignKey(ContentType)
object_id = models.PositiveIntegerField()
content_object = generic.GenericForeignKey('content_type', 'object_id')

What about GenericForeignKey? You could have userid, activityid and content_object on your UserActivity where content_object is a song, an user or something completely different.

content_type = models.ForeignKey(ContentType)
object_id = models.PositiveIntegerField()
content_object = generic.GenericForeignKey('content_type', 'object_id')
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文