假设我有这些模型:
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 中检索值一样?
答案 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')