Django get all,带有相关模型

Posted

技术标签:

【中文标题】Django get all,带有相关模型【英文标题】:Django get all, with related models 【发布时间】:2015-04-16 03:40:12 【问题描述】:

问题:

我正在使用 Django Rest Framework,我想获取所有包含关系的模型,如下所示:

TestModel.objects.all()

我的模型如下所示:

class TestModel(models.Model):
   name = models.CharField(max_length=32)
   related_model = models.ForeignKey(TestRelation)

问题是,我只获得related_model 的主键,但我需要整个related_model

我正在使用 ListCreateAPIView,上面的查询集 (TestModel.objects.all()) 和 ModelSerializer 的最基本形式。

我尝试了PrimaryKeyRelatedField,但得到了相同的结果..

谢谢!

【问题讨论】:

找到我的答案:***.com/questions/14573102/… 【参考方案1】:

只需为您的相关模型创建序列化程序:

class TestRelationSerializer(serializers.ModelSerializer):

    class Meta:
        meta = TestRelation

并且使用是TestModelSerializer中的字段:

class TestModelSerializer(serializers.ModelSerializer):
    related_model = TestRelationSerializer()

您也可以通过其他方式执行此操作,将 TestModelSerializer 用作 TestRelationSerializer 中的字段,并将 many 设置为 true:

class TestRelationSerializer(serializers.ModelSerializer):
    testmodel_set = TestModelSerializer(many=True)

请记住,您不能同时执行这两项操作,因为它会产生无限递归。

【讨论】:

以上是关于Django get all,带有相关模型的主要内容,如果未能解决你的问题,请参考以下文章

在 Django 中有效地获取相关模型的计数

Django - 如何以有效的方式获取最新的相关模型,我可以在模板上进行迭代?

在Django模板中循环相关模型的孩子

Django:将带有相关对象的 QuerySet 转换为 JSON

Django ORM那些相关操作

Django使用“通过”关系表从模型中获取所有相关对象