2017-07-29 20 views
0

私のモデルでクエリーセットフィルタを使用する際に問題があります。 グループ内の投稿のコントロールです。django queryset filter foreignkey

これは私のコードです:

class Post(models.Model): 
    title = models.CharField(max_length=120) 
    content = models.TextField() 


class Group(models.Model): 
    title = models.CharField(max_length=200) 
    url = models.URLField(unique=True) 


class Control(models.Model): 
    published = models.DateField(auto_now=False, auto_now_add=False) 

    group = models.ForeignKey(Group, on_delete=models.CASCADE) 
    post = models.ForeignKey(Post, on_delete=models.CASCADE) 

私はタイトルが「タイトル」とのグループからのすべての投稿を取得しようとしている:

queryset_list = Control.objects.filter(group__control="title") 

私のモデルが正しいかもNITかもしれませんが、私は」これに新しい。 助けてください?

+0

なぜあなたは 'Control'モデルを持っていますか? 'Post'があるグループに公開され、別のグループには公開されない可能性はありますか? –

+0

はい、特定のグループの投稿が異なる可能性があります。 –

答えて

1

おそらくタイプミスですか?グループの投稿を

class Group(models.Model): 
    title = models.CharField(max_length=200) 
    url = models.URLField(unique=True) 

    posts = models.ManyToManyField('Post', through='Control') 

、他の2つのモデルが同じままですが、今では簡単につかむことができます:

queryset_list = Control.objects.filter(group__title="title") 
#            ^^^^^^ 
posts_title = queryset_list.values('post__title') 
1

まず、あなたはManyToManyFielddocsGroupに追加する必要があります

posts = Group.objects.get(title='some title').posts.all() 
+0

私はこのエラーがあります:exec_module のファイル ""、行678 ファイル ""、行205、_call_with_frames_removed ファイル "/ home/renan/django/social-posts /src/control/models.py "、行21、 クラスコントロール(models.Model): ファイル" /home/renan/django/social-posts/src/control/models.py "、24行目、 (グループ、on_delete = models.CASCADE) グループ= models.ForeignKey NameError:名前 'Group'が定義されていません –

+0

あなたはグループをControlの下に移動したとしますか? 'Group'を引用符で囲みます:' group = models.ForeignKey( 'Group'、on_delete = models.CASCADE) ' –

+0

それはうまくいきませんでした。これは私のコード(manytomany関係なし)です:https://bitbucket.org/renanbs/social-posts。 –