Django Rest Framework - 如何获取外键的外键字段

时间:2015-08-23 12:50:00

标签: django django-rest-framework

假设我有这些模型:

class ModelCSerializer(serializers.ModelSerializer):
    field_b = serializers.SlugRelatedField(
        read_only=True,
        source='some_field_b',
        slug_field='some_field_b')

    field_a = ???

    class Meta:
        model = ModelC
        fields = ('some_field_c', 'field_b', 'field_a')

然后在我的ModelC序列化程序中,我可以从ModelB访问字段 some_field_b

WHERE categories.title_gr='$row_best_offer[category_gr]'

但我应该添加到 field_a 以检索 some_field_a 的值,就像我从 some_field_b 中检索值一样?

1 个答案:

答案 0 :(得分:4)

不确定我是否理解你的例子,但似乎你希望从C - >走出这种关系。 B - > A并获得该值。您可以使用点语法跟踪source参数中的关系,就像您直接访问对象时一样。

class ModelCSerializer(serializers.ModelSerializer):
    field_b = serializers.SlugRelatedField(
        read_only=True,
        source='b.some_field_b',
        slug_field='some_field_b')

    field_a = serializers.SlugRelatedField(
        read_only=True,
        source='b.a.some_field_a',
        slug_field='some_field_a')

    class Meta:
        model = ModelC
        fields = ('some_field_c', 'field_b', 'field_a')