Django中的外键反向导航(Foreign key backward navigation in Django)

编程入门 行业动态 更新时间:2024-10-25 04:22:26
Django中的外键反向导航(Foreign key backward navigation in Django)

对于这个例子:

class Blog(models.Model): name = models.CharField(max_length=100) tagline = models.TextField() def __unicode__(self): return self.name class Author(models.Model): name = models.CharField(max_length=50) email = models.EmailField() def __unicode__(self): return self.name class Entry(models.Model): blog = models.ForeignKey(Blog, related_name='entries') headline = models.CharField(max_length=255) body_text = models.TextField() pub_date = models.DateTimeField() mod_date = models.DateTimeField() authors = models.ManyToManyField(Author) n_comments = models.IntegerField() n_pingbacks = models.IntegerField() rating = models.IntegerField() def __unicode__(self): return self.headline

那么,如何查找所有带有条目的博客?

我想做这样的事情

q = Blog.objects.all().entries.filter(...)

但它给了我一个错误。 那么Django只支持将后向导航属性仅用于一个对象而不是一组对象吗?

For this example:

class Blog(models.Model): name = models.CharField(max_length=100) tagline = models.TextField() def __unicode__(self): return self.name class Author(models.Model): name = models.CharField(max_length=50) email = models.EmailField() def __unicode__(self): return self.name class Entry(models.Model): blog = models.ForeignKey(Blog, related_name='entries') headline = models.CharField(max_length=255) body_text = models.TextField() pub_date = models.DateTimeField() mod_date = models.DateTimeField() authors = models.ManyToManyField(Author) n_comments = models.IntegerField() n_pingbacks = models.IntegerField() rating = models.IntegerField() def __unicode__(self): return self.headline

So, how to find all Blogs with its Entries?

I want to do something like this

q = Blog.objects.all().entries.filter(...)

But it gave me an error. So does Django only supports to use the backward navigation properties for only one object rather than a set of objects?

最满意答案

假设您要过滤所有博客的条目,并获取您需要的条目的博客:

Blog.objects.filter(entry__headline__icontains="cats").distinct()

这里有一个博客到多个条目的关系,但是此查询有效并且为您提供了标题中包含猫的条目的博客。

Let's say you want to filter on the entries of all blogs, and get the blogs that have entries you require:

Blog.objects.filter(entry__headline__icontains="cats").distinct()

There is a one blog to many entries relationship here, but this query works and gives you the blogs that have entries with cats in headlines.

更多推荐

本文发布于:2023-08-05 19:22:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1439351.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:Foreign   Django   navigation   key

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!