在 Django 中,不能在 ManyToManyField 上使用字符串连接吗? ManyToMany 不只是一个列表吗?

2024-06-23

我的 Django 项目中有两个模型:

  • Match
  • Player

Match 有一个指向玩家的 ManyToMany 属性,以便多个玩家可以在一场比赛中竞争。我想通过使用玩家全名的连接在 Django 管理中返回一个信息丰富的对象名称,例如“Richard Henry vs John Doe”。但是以下失败:

class Match(models.Model):
    players = models.ManyToManyField(Player, verbose_name='Competitors')

    def __unicode__(self):
        return " vs ".join(self.players)

ManyToManyFields 不只是列表吗?为什么我不能加入他们?任何意见都会受到赞赏。这是我的玩家模型,以防有帮助:

class Player(models.Model):
    full_name = models.CharField(max_length=30)

    def __unicode__(self):
        return "%s" % self.full_name

Thanks!

Edit: 我刚刚发现我可以使用self.players.list_display将此作为列表返回。我不再吐槽回溯,但出于某种原因__unicode__名称现在返回None。知道为什么会这样吗?

Edit 2:更改代码:

class Match(models.Model):
    players = models.ManyToManyField(Player, verbose_name='Competitors')

    def __unicode__(self):
        return " vs ".join(self.players.list_display)

另一种选择是:

return " vs ".join(p.full_name for p in self.players.all())

注意:很抱歉把这个带回来——掘墓人:-)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Django 中,不能在 ManyToManyField 上使用字符串连接吗? ManyToMany 不只是一个列表吗? 的相关文章

随机推荐