如何通过Language
访问Programmer
的所有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)
我尝试过这种方法,但是没有人工作过
在Programmer
实例中:instance.level_set.language_id
,instance.level.all.language_id
,instance.level.all.language.id
并尝试了此instance.level_set.language.id
所有所说的程序员没有属性,language
,language_id
等感谢您的任何建议
一些有用的东西:
instance.langs.values_list('id', flat=True)
# <QuerySet [1, 5]>
instance.level_set.values_list('language__id', 'level')
# <QuerySet [(1, 'advanced'), (5, 'beginner')]>
您应该在程序员实例中尝试以下操作
instance.langs.all()
对于语言学院
instance.programmer_set.all()
django many to many relationship with extra fields
-编辑-
在您的语言模型下定义功能
def __str__(self):
return self.id