django queryset过滤外键

时间:2017-07-29 20:57:02

标签: django foreign-keys django-queryset

我在尝试将查询集过滤器与模型一起使用时遇到问题。 它是群组中帖子的控件。

这是我的代码:

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)

我正在尝试从标题为“title”的组中获取所有帖子:

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

我的模特可能是对的,我是新手。 有什么帮助吗?

2 个答案:

答案 0 :(得分:1)

也许是拼写错误?

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

答案 1 :(得分:1)

首先,您应在ManyToManyFielddocs)上添加Group

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()