3

我有一个打过三个联赛的球员实例。在球员模型类中,我设置了多对多与联赛类的字段。

现在我想将所有 3 个联赛添加到 Django shell 中的播放器实例中。

class League(models.Model):
        league = models.CharField(max_length=20)

        def __str__(self):
            return self.league

    class Player(models.Model):
        name = models.CharField(max_length=30)
        league_played = models.ManyToManyField(League, default='Unknown')
4

1 回答 1

6

以下内容应该可以工作。使用文档add中概述的字段方法:

p = Player.objects.get(name=whatever)
p.league_played.add(*League.objects.filter(league__in=['league_name1', 'ln2', 'ln3']))

对于更好的 django shell,我可以推荐你 django-extensionshell_plus,它有一些很酷的功能,比如代码完成或所有模型的自动导入。

于 2017-12-09T21:49:25.807 回答