【问题标题】:How to use prefetch_related in django models如何在 django 模型中使用 prefetch_related
【发布时间】:2020-08-27 18:18:51
【问题描述】:

我有两个模型TeachersSubjects。不用担心名字。这只是练习。我想查询所有老师,对于每个老师,它将获取他/她创建的所有科目。

模型


class Teachers(models.Model):
    firstname = models.CharField(max_length=20)
    second = models.CharField(max_length=20)

class Subjects(models.Model):
    coursename = models.CharField(max_length=200)
    coursedescription = models.CharField(max_length=500)
    tutor = models.ForeignKey(
         Teachers, on_delete=models.CASCADE,related_name='teacher'
    )

我正在使用 prefetch_related

teachers_subjects_queryset = Teachers.objects.prefetch_related('teacher').all()

序列化后我得到了什么

{
    "id": 1,
    "firstname": "Andrew",
    "second": "Njaya",
    "teacher": [
        1,
        2,
        3
    ]
},
{
    "id": 2,
    "firstname": "Kevin",
    "second": "Odhiambo",
    "teacher": [
        4,
        5
    ]}

我想要的是

{
    "id": 1,
    "firstname": "Andrew",
    "second": "Njaya",
    "teacher": [
        {"id":1, "coursename":"Algebra", "coursedescription":"Fundermentals of Algebra"},
        {"id":2, "coursename":"Algebra", "coursedescription":"Fundermentals of Algebra"},
        {"id":3, "coursename":"Algebra", "coursedescription":"Fundermentals of Algebra"},
    ]
},
{
    "id": 2,
    "firstname": "Andrew",
    "second": "Njaya",
    "teacher": [
        {"id":4, "coursename":"Algebra", "coursedescription":"Fundermentals of Algebra"},
        {"id":5, "coursename":"Algebra", "coursedescription":"Fundermentals of Algebra"}
    ]}

【问题讨论】:

  • 您好,您的问题似乎措辞不当,因此被否决了,您不会得到很多答复。这里有一些关于如何提出好问题的 [stackoverflow.com/help/how-to-ask](official 指南)。但是,我建议: 1)粘贴模型的相关定义代码,粘贴您用于查询的代码。 2) 展示你得到了什么(剪断相关行)并展示你想要得到什么。

标签: django postgresql django-models django-rest-framework


【解决方案1】:

看起来您正在序列化程序中遍历模型关系。 Check this out

【讨论】:

    猜你喜欢
    • 2013-11-23
    • 1970-01-01
    • 2017-11-27
    • 2018-08-06
    • 2016-11-28
    • 2015-06-08
    • 2021-11-01
    • 2013-01-24
    • 2018-01-15
    相关资源
    最近更新 更多