繁体   English   中英

Django 2.1:如何获取每个对象中包含外键指向这些对象的对象的列表

[英]Django 2.1: How to get a list of objects that in each object, contains the objects that have a foreign key pointing to them

我有这两节课:

Class A:
data

Class B:
a = models.ForeignKey(A)

如何获得A的数组,其中每个A包含与之相关的B

我需要它,因为我必须返回以JSON连接的两个表。

首先设置背面关系a ,然后迁移数据库:

Class A(models.Model):
    data

Class B(models.Model):
    a = models.ForeignKey(A, related_name='b_relations', null=False, blank=False, on_delete=models.CASCADE)

现在,您可以访问后关系。 您需要在b_relations上调用b_relations .all() ,因为它是延迟加载的。

A.objects.first().b_relations.all()

为了获取json数据,我建议使用Django rest框架的ModelSerializer:

class BSerializer(serializers.ModelSerializer):
    class Meta:
        model = B
        fields = (
            'pk', # primary key
            'a',
        )
        depth = 0

class ASerializer(serializers.ModelSerializer):
    b_relations = BSerializer(many=True, read_only=True))

    class Meta:
        model = A
        fields = (
            'pk', # primary key
            'b_relations',
        )
        depth = 0

要获取json数据:

a_relations: QuerySet = A.objects.all()
serializer = ASerializer(a_relations, many=True)
json_data: Dict = serializer.data

如果您从未使用过Django Rest Framework: Django Rest Framework-入门

玩得开心!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM