django queryset筛选器foreignkey

问题描述:

我在尝试在我的模型中使用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

是的,我可能会为特定的群组设置不同的帖子。 –

也许它是错字?

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

首先,你应该添加一个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。 –