2013-08-17 106 views
0

我需要你的建议。我正在创建一个名为PlayList的模型,用户可以在其playlist中添加songsmovies。 我添加了一个字段名称playlist_type。它会询问用户是歌曲播放列表还是电影播放列表?如果是歌曲播放列表,那么他不能在播放列表中添加movies关于款式的建议

好的。现在我应该使用ContenType还是应该创建两个更独立的模型PlayListSongPlayListMovies。你有什么建议?由于

class PlayList(TimeStampedModel): 
    SONG_PLAYLIST = 1 
    MOVIES_PLAYLIST = 2 

    PLAYLIST_CHOICES = (
     (SONG_PLAYLIST, 'Songs'), 
     (MOVIES_PLAYLIST, 'Movies'), 
    ) 
    name = models.CharField(_('PlayList Name'), max_length=100) 
    user = models.ForeignKey(User) 
    playlist_type = models.IntegerField(choices=PLAYLIST_CHOICES) 

class PlayListContentType(TimeStampedModel): 
    playlist = models.ForeignKey(PlayList) 
    content_type = models.ForeignKey(ContentType, related_name="likes") 
    object_id = models.PositiveIntegerField() 
    content_object = generic.GenericForeignKey() 

回答

0

我认为你是最好创建独立的模型,PlayListSong和PlayListMovies,正在从播放列表模式继承。

如果用PlayListContentType模型去,你可能将不得不执行,如果在每一个功能/其他检查你定义首先确定什么CONTENT_TYPE你正在处理做任何事的前...

。 .. [非常简单]示例:

class PlayListContentType(TimeStampledModel): 
    // Attributes here. 

    def get_favorite_movie(self): 
     if self.content_type.name == "movie": 
      // Get movie from playlist. 
     else: 
      // Return error message/exception/etc. 

这只是立即想到的一个缺点。你可以围绕它编码/设计 - 但是如果你立即强迫自己这样的限制,那么你正在为自己设定一个故障(当你想支持一个新的内容类型时会发生什么?)。

+0

好的,谢谢我会创建单独的模型。 :-) – Shah