Django 反查通用关系注意点

官网例子: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')

这样就可以从 TaggedItemBookmark 进行过滤、排序和其他查询操作:

例:获取所有属于url中包含' django '的书签的标签

TaggedItem.objects.filter(bookmark__url__contains='django')

, ]>

多处使用了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')

你可能感兴趣的:(Django 反查通用关系注意点)