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.