2010-05-13 7 views
0

저는 음악 앱을 제작 중입니다. 사용자는 노래와 같은 음악 듣기, 친구에게 추천 노래 및 추가 음악 등 여러 가지 작업을 할 수 있습니다.디자인 관련 질문이 있으십니까?

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

지금까지 내가 약 2 솔루션을 생각 : 현재 나는이 모델이있다. 1. 문자열을 데이터베이스에 저장. 예 : "당신은 노래 xyz를 들었습니다." 2. 활동에 관한 사전을 작성하고 pickle이나 json을 사용하여 데이터베이스에 저장하십시오.

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

저는 두 번째 구현에 기대고 있지만 확실하지 않습니다.

그래서이 두 가지 방법에 대해 어떻게 생각합니까? 목표 달성을위한 더 나은 방법을 알고 있습니까?

+0

JSON (및 jason이 아닙니다) –

답변

0

데이터베이스에있는 테이블과 일치하는 열거 형 만 있으면됩니다.

그래서 당신의 UserActivity 테이블에, 당신은 사용자 ID, activityid, songid을해야합니다 날짜 등 등 GenericForeignKey에 대한

+0

을 의미하나요? 사용자 친구가 다른 사용자이거나 재생 목록을 만들면 어떨까요? 나는 많은 null을 갖게 될 것이다. – Mohamed

+0

+1 문자열을 구문 분석하여 모든 다른 활동 유형을 코드화/필터링 /보고하려고합니다. 응. 액티비티에 대해 짧고, 바람직하게는 정수이며, 분명히 모호하지 않은 식별자를 확실히 원합니다. 필요시 사람이 읽을 수있는 설명을 작성하여 표시되는 컨텍스트에 맞 춥니 다. –

+0

이것은 상호 참조 테이블이므로 노래가있는 사용자 만 있습니다. 당신은 playlistid를 가지고 이것을 확장 할 수 있습니다 그리고 당신은 다른 테이블로 songid를 가져갈 수 있습니다. 이를 수행하는 데는 여러 가지 방법이 있습니다. 그냥 문자열을 사용하지 마십시오. –

0

무엇입니까? UserActivityuserid, activityidcontent_object이있을 수 있습니다. content_object은 완전히 다른 노래, 사용자 또는 다른 무언가입니다.

content_type = models.ForeignKey(ContentType) 
object_id = models.PositiveIntegerField() 
content_object = generic.GenericForeignKey('content_type', 'object_id') 
관련 문제