ManytoManyField Django : как вызывать модели в методах?

Мне нужна помощь, я хочу вызывать модели с ManyToManyField. Я хочу иметь метод для получения класса A из класса B, и другой метод в классе B для получения класса A.

вот мой (сокращенный) код :

class Licence(models.Model):
    name = models.CharField(max_length=64)
    picture = models.ImageField(upload_to='finder/static/finder/img/licence/',null=True, blank=True)
    description = models.TextField(null=True, blank=True)

    #returns a list of games from this license
    def getGamesOnThisLicence(self):

        #i don't know how to proceed

class Game(models.Model):
    name = models.CharField(max_length=64)
    description = models.TextField()
    release_date = models.DateField(null=True, blank=True)
    licence = models.ManyToManyField(Licence, blank=True, null=True)

    #return name of licence to which the game belongs
    def getLicenceName(self):
        return self.licence.name

Вы можете получить доступ к Gameс помощью:

my_license.game_set.all()

поэтому вы можете использовать self в getGamesOnThisLicense, но, вероятно, нет большого выигрыша в определении функции, так как это делает доступ к Game уже достаточно удобным.

Возможно, вы захотите преобразовать ManyToManyField в ForeignKey в License, поскольку self.license.name имеет мало смысла: для ManyToManyField, self.license является Manager над License объектами, которые могут управлять нулем, одним или несколькими License, поэтому вы не можете использовать self.license.name.

Вернуться на верх