Вопрос дизайна? - PullRequest
       24

Вопрос дизайна?

0 голосов
/ 13 мая 2010

Я создаю музыкальное приложение, в котором пользователь может выполнять несколько задач, включая, но не ограничиваясь, прослушивание песни, например, песню, рекомендовать песню другу и дополнительно. В настоящее время у меня есть эта модель:

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}

Я склоняюсь ко второй реализации, но не совсем уверен.

так что вы думаете об этих двух методах? Вы знаете лучший способ достижения цели?

Ответы [ 2 ]

0 голосов
/ 13 мая 2010

А как насчет 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')
0 голосов
/ 13 мая 2010

Похоже, все, что вам нужно, - это перечисление, соответствующее таблице в вашей базе данных.

Итак, в вашей таблице UserActivity вы будете иметь идентификатор пользователя, код активности, идентификатор песни, дата и т. д. и т. д.

...