class Blog(models.Model):
name = models.CharField()
def get_posts_belonging_to_this_blog_instance(self):
return Post.objects.filter(blog__exact=self.id)
class Category(models.Model):
name = models.CharField()
def get_posts_with_this_category(self):
return Post.objects.filter(category__exact=self.id)
class Post(models.Model):
blog = models.ForeignKey(Blog)
category = models.ForeignKey(Category)
text = models.TextField()
使用代码解释它的最佳方法是,有更多的Django方法吗?
答案 0 :(得分:4)
首先,请注意这些关系不是1比1,它们是1到N或N比1,这取决于你看的方式。
要访问类别或博客中的所有帖子,您只需使用your_category.post_set.all()
即可。如果要更改此属性名称,可以像这样定义Post:
blog = models.ForeignKey(Blog, related_name="posts")
category = models.ForeignKey(Category, related_name="posts")
然后使用your_category.posts.all()
或your_blog.posts.all()
进行访问。