如何访问多对多关系django中选定名称的ID

how to access to ids of selected names in manytomany relationship django

如何通过 Programmer

访问 Language 的所有 ID
class Language(models.Model):
    name = models.CharField(max_length=20)

class Programmer(models.Model):
    name = models.CharField(max_length=30)
    langs = models.ManyToManyField(Language,through='Level')

class Level(models.Model):
    language = models.ForeignKey(Language)
    programmer = models.ForeignKEy(Programmer)
    level = models.CharField(max_length=10)

我试过这种方法,但没有人成功

in Programmer instance : instance.level_set.language_id , instance.level.all.language_id , instance.level.all.language.id 也试过这个 instance.level_set.language.id 都说程序员没有属性,languagelanguage_id等 感谢您的任何建议

您应该在程序员实例中尝试以下操作

instance.langs.all()

语言实例

instance.programmer_set.all()

django many to many relationship with extra fields

--编辑--

在你的语言模型下定义一个函数

def __str__(self):
    return self.id

一些有用的东西:

  • 获取所有语言 id 作为可迭代对象:
instance.langs.values_list('id', flat=True)
# <QuerySet [1, 5]>
  • 作为二元组列表的级别和语言 ID:
instance.level_set.values_list('language__id', 'level')
# <QuerySet [(1, 'advanced'), (5, 'beginner')]>