Reputation: 791
how to access all ids of Language
s through Programmer
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)
i tried this ways but no one worked
in Programmer
instance : instance.level_set.language_id
, instance.level.all.language_id
, instance.level.all.language.id
and also tried this instance.level_set.language.id
all said Programmer has no attribute ,language
, language_id
etc
thanks for any advice
Upvotes: 0
Views: 480
Reputation:
Some useful things:
instance.langs.values_list('id', flat=True)
# <QuerySet [1, 5]>
instance.level_set.values_list('language__id', 'level')
# <QuerySet [(1, 'advanced'), (5, 'beginner')]>
Upvotes: 1
Reputation: 973
You should try the following in programmer instance
instance.langs.all()
for Language Instnace
instance.programmer_set.all()
django many to many relationship with extra fields
--edit--
under your Languages Model define a function
def __str__(self):
return self.id
Upvotes: 1