2016-09-15 111 views
0

我有以下型號:如何將queryset添加到ManyToMany關係?

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殼,

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的查詢集添加到許多一對多場? 我不知道爲什麼會發生這種情況..任何幫助表示讚賞! :)

+0

如果你仍然需要使用查詢集,那麼你不應該使用'values_list',你顯示的代碼沒有多大意義,我不知道它試圖實現什麼 – Sayse

回答

0

你不應該使用values_list如果你打算add的新關係之後。從docs

values()values_list()都旨在優化用於 特定使用案例:檢索數據的一個子集,而不 開銷創建一個模型實例

[點睛mine]

很難說清楚你沒有好的描述o你想實現什麼。

0

您應該從實例中調用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)