2016-09-15 11 views
0

I持って次のモデル:私はDjangoのシェルでこれにしようとすると、私はエラーを得た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 

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' 

は、どのように私は、多対多のフィールドに追加クエリセットジャンゴことができますか? なぜこれが起こっているのかわかりません。 :)

+0

質問リストを使って作業する必要がある場合は、 'values_list'を使用するべきではありません。あなたが示したコードはあまり意味がなく、私はその達成しようとしていることが分かりません – Sayse

答えて

0

あなたはvalues_listを使用すべきではありません。 docsから:

モデルのインスタンスを作成する オーバーヘッドなしでデータのサブセットを取得[強調:

values()values_list()を両方 特定のユースケースのための最適化として意図されています鉱山]

あなたは良い記述なしであなたが何をしているのかは分かりません。あなたが達成したいもの。

0

インスタンスからm2m addを呼び出し、エンティティを追加することもモデルインスタンスである必要があります。さもなければあなたの表現は意味をなさない。新しいリレーションその後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) 
関連する問題