如何在 django shell 中添加多个多对多数据

Moh*_*han 2 python django django-shell

我有一个玩过三个联赛的玩家实例。在玩家模型类中,我设置了许多具有联赛类的字段。

现在我想将所有 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')
Run Code Online (Sandbox Code Playgroud)

sch*_*ggl 6

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

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

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