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

您可以通过以下方式访问 Games:

my_license<strong>.game_set.all()</strong>

所以你可以在 getGamesOnThisLicense 中使用 self,但是定义一个函数可能没有太多好处,因为这使得访问 Game 已经很方便了。

也许你想将 ManyToManyField 转换为 ForeignKeyLicense,因为 self.license.name 没有多大意义:对于 ManyToManyFieldself.license 是一个 Manager over License 对象,可以管理零个、一个或多个 License,所以你不能使用 self.license.name.