有没有办法将模型的多个实例嵌入到Django的单个模型字段中?

问题描述

我知道外键概念Djongo Array字段,但是有替代方法吗? 外键概念的问题是,我需要对数据库进行多次匹配,而Array字段的问题是缺少信息,并且在没有已知解决方案的情况下出现了错误。 我基本上想做的是实际上将一个模型的多个实例添加到另一个模型的单个字段中,例如注释,但是我想将其嵌入,而不是创建一个新表用于注释,但是我尝试使用抽象模型无法解决。 我想知道任何其他解决方案。

解决方法

您可以使用外键,为避免对每个相关记录进行单独查询,您可以使用prefetch_related-https://docs.djangoproject.com/en/3.1/ref/models/querysets/#prefetch-related一次提取它们:

返回一个QuerySet,该查询集将自动为每个指定的查询分批检索相关对象。

代码示例:

# models.py
class Post(models.Model):
    title = models.CharField(max_length=100)
    content = models.TextField()


class Comment(models.Model):
    post = models.ForeignKey(Post,models.CASCADE)
    text = models.TextField()


# Somewhere else,fetch posts together with related comments:
# It will take 2 requests in total 
# - one to fetch posts,another to fetch all related comments
for post in Post.objects.all().prefetch_related('comment_set'):
    print([c.text for c in post.comment_set.all()])