ManytoManyField Django:如何在方法中调用模型?
ManytoManyField Django : how to call models in methods?
我需要一些帮助,我想用 ManyToManyField 调用模型。
我想有方法从 Class B 得到 Class A,在 Class B 中得到另一个方法得到 Class 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
s:
my_license<strong>.game_set.all()</strong>
所以你可以在 getGamesOnThisLicense
中使用 self
,但是定义一个函数可能没有太多好处,因为这使得访问 Game
已经很方便了。
也许你想将 ManyToManyField
转换为 ForeignKey
到 License
,因为 self.license.name
没有多大意义:对于 ManyToManyField
,self.license
是一个 Manager
over License
对象,可以管理零个、一个或多个 License
,所以你不能使用 self.license.name
.
我需要一些帮助,我想用 ManyToManyField 调用模型。 我想有方法从 Class B 得到 Class A,在 Class B 中得到另一个方法得到 Class 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
s:
my_license<strong>.game_set.all()</strong>
所以你可以在 getGamesOnThisLicense
中使用 self
,但是定义一个函数可能没有太多好处,因为这使得访问 Game
已经很方便了。
也许你想将 ManyToManyField
转换为 ForeignKey
到 License
,因为 self.license.name
没有多大意义:对于 ManyToManyField
,self.license
是一个 Manager
over License
对象,可以管理零个、一个或多个 License
,所以你不能使用 self.license.name
.