通过外键实例获取表的元素。

时间:2015-06-10 10:41:39

标签: django django-models

我在Django中有两个模型:

class Blog(models.Model):

   author = ForeignKey(Author)
   post = models.CharField(max_length=100)

class Author(models.Model):
   name = models.CharField(max_length=100)

我需要通过作者实例获取博客条目:

author_one = Author (name ='John')
author_one.save()
blog_entry = Blog.objects.get(author = author_one)

我是否需要在Author Foreignkey字段中添加相关名称才能获得结果?通过外键字段获取表的行的正确方法是什么?

提前致谢。

3 个答案:

答案 0 :(得分:2)

为了澄清一件事,在这种情况下使用 get()是不对的,引用 get() docs:

  

如果您知道只有一个对象与您的查询匹配,则可以在直接返回对象的Manager上使用 get()方法

或者使用Wtower提到的内容,您也可以使用:

blog_entry = Blog.objects.filter(author=author_one)

答案 1 :(得分:2)

  

请检查获取查询,

     

更改此内容
blog_entry = Blog.objects.get(author = author_one)
  

blog_entry = Blog.objects.get(author=author_one)
  

因为“=”在提取对象时不占用空格。

答案 2 :(得分:1)

您可以访问相关数据:

author_one.blog_set

参考:Django docs: Related objects

无需指定related_name,但如果您这样做,则可以类似地使用它,例如:

class Blog(models.Model):
   author = ForeignKey(Author, related_name='author_blogs')
...
author_one_blogs = author_one.author_blogs.all()

参考:Django文档:Foreign key related_nameFollowing relationships backward