art_cs
art_cs

Reputation: 791

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

how to access all ids of Languages 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

Answers (2)

user1600649
user1600649

Reputation:

Some useful things:

  • To get all language id's as an iterable:
instance.langs.values_list('id', flat=True)
# <QuerySet [1, 5]>
  • Level and language id as a list of 2-tuples:
instance.level_set.values_list('language__id', 'level')
# <QuerySet [(1, 'advanced'), (5, 'beginner')]>

Upvotes: 1

Arvind Kumar
Arvind Kumar

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

Related Questions