2010-02-27 7 views
0

ont fait ce modèle:comment rechercher des articles apparentés dans ManyToManyField?

class MusicFile(models.Model): 
    file = models.FileField(upload_to="files") 

    def exist_in_playlist(self, playlist_id): 
     exist = False 
     try: 
      mp = PlayList.objects.get(id=playlist_id, items__id=self.id) 
      exist = True 
     except PlayList.DoesNotExist: 
      pass 
    return exist 

class PlayList(models.Model): 
    items = ManyToManyField(MusicFile) 

MusicFile.exist_in_playlist me retourne si X est MusicFile dans Y Playlist.

  1. Avec django ai-je l'option d'écrire quelque chose comme PlayList.items.exist(MusicFile)?

  2. Sinon, est-ce une bonne implémentation pour la recherche si un fichier MusicFile se trouve dans la liste de lecture?

Merci.

Répondre

4

Vous pouvez simplifier que comme celui-ci (existe() a été ajouté à 1,2):

def exist_in_playlist(self, playlist): 
    return self.playlist_set.filter(pk=playlist).exists() 
Questions connexes