如何向多对多关系中添加查询集



我有以下模型:

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

当我在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'

我怎么能django queryset添加到多对多字段?我不知道为什么会这样…任何帮助,感谢!:)

如果您打算在之后add创建一个新关系,则不应该使用values_list。来自文档:

values()values_list()都是为了优化一个特定的用例:检索数据的子集,而不包含创建模型实例的开销

(强调我的]

如果没有一个很好的描述你想要达到的目标,你很难知道你在做什么。

您应该从实例调用m2m add,并且添加的实体也应该是模型实例。否则你的表达就没有意义了。

b = EnActress.objects.get(pk=some_pk) # get an instance, not queryset
a = EnMovielist.objects.get(pk=some_pk) # also instance
b.movielist.add(a)

相关内容

  • 没有找到相关文章

最新更新