官网例子:https://docs.djangoproject.com/zh-hans/4.1/ref/contrib/contenttypes/#django.contrib.contenttypes.fields.GenericRelation
定义 GenericRelation
,并设置 related_query_name
允许从相关对象查询:
tags = GenericRelation(TaggedItem, related_query_name='bookmark')
这样就可以从 TaggedItem
对 Bookmark
进行过滤、排序和其他查询操作:
例:获取所有属于url中包含' django '的书签的标签
TaggedItem.objects.filter(bookmark__url__contains='django')
<QuerySet [<TaggedItem: django>, <TaggedItem: python>]>
多处使用了related_query_name的注意事项
切记:使用不同related_query_name,否则,查询不到
例:
# 1
review = GenericRelation(Review, related_query_name='article_review_query')
# 2
review = GenericRelation(Review, related_query_name='comment_review_query')
# 3
review = GenericRelation(Review,related_query_name='reply_review_query')
查询:
Review.objects.filter(article_review_query='TNuig82Tpz') # 主键可省略
Review.objects.filter(article_review_query__title__contains='test')
网友评论