2017-07-29 64 views
0

我在嘗試在我的模型中使用queryset篩選器時遇到問題。 這是一個控制組中的帖子。django queryset篩選器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") 

我的模型可能尼特是正確的,我新的這個。 有什麼幫助嗎?

+0

爲什麼你有'Control'模型? Post可以發佈在一個組中,而不是另一個發佈? –

+0

是的,我可能會爲特定的羣組設置不同的帖子。 –

回答

1

也許它是錯字?

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

首先,你應該添加一個ManyToManyFieldGroupdocs):

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

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

其他兩種模式保持不變,但現在你可以輕鬆抓取職位組:

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

我得到這個錯誤:文件「」,第678行,在exec_module 文件「」,第205行,在_call_with_frames_removed 文件「/ home/renan/django/social-posts /src/control/models.py「,第21行,在 class Control(models.Model): 文件」/home/renan/django/social-posts/src/control/models.py「,第24行, in Control group = models.ForeignKey(Group,on_delete = models.CASCADE) NameError:名稱'Group'未定義 –

+0

假設您將Group移動到Control下面?將'Group'放在引號中:'group = models.ForeignKey('Group',on_delete = models.CASCADE)' –

+0

呃,它也不起作用。這是我的代碼(沒有manytomany關係):https://bitbucket.org/renanbs/social-posts。 –