Search code examples
pythondjangodjango-querysetmanytomanyfield

How to add queryset to ManyToMany relationship?


I have following models:

class EnMovielist(models.Model):
    content_ID = models.CharField(max_length=30)
    release_date = models.CharField(max_length=30)
    running_time = models.CharField(max_length=10)
    actress = models.CharField(max_length=300)
    series = models.CharField(max_length=30)
    studio = models.CharField(max_length=30, null=True)
    director = models.CharField(max_length=30)

    def __str__(self):
        return self.content_ID


class EnActress(models.Model):
    name = models.CharField(max_length=100, null=True)
    movielist = models.ManyToManyField(EnMovielist, related_name='movies')

    def __str__(self):
        return self.name

I got error when I try to this in Django shell,

b = EnActress.objects.values_list('name', flat=True)
a = EnMovielist.objects.filter(actress__contains=b).values_list('content_ID')

b.movielist.add(a)



AttributeError: 'QuerySet' object has no attribute 'movielist'

How can I django queryset add into many-to-many field? I have no idea why this is happening.. Any help appreciated! :)


Solution

  • You should not be using values_list if you intend to add a new relation afterwards. From the docs:

    values() and values_list() are both intended as optimizations for a specific use case: retrieving a subset of data without the overhead of creating a model instance

    [Emphasis mine]

    It's hard to tell what you're up to without having a good description of what you want to achieve.