如何访问 Django ForeignKey 模型字段?

How to access Django ForeignKey model field?

我有两个 django 模型

模型 A

class A(models.Model):
    aname = models.CharField(max_length=64, verbose_name='name')

和模型 B

class B(models.Model):
    bname = models.CharField(max_length=64, verbose_name='name')
    mod = models.ForeignKey(A, related_name='a_b',null=True,on_delete=models.CASCADE)

模型 B 的序列化器是

class BSerializer(serializers.ModelSerializer):
mod= ASerializer(many=False, read_only=True)
class Meta:
    model = B
    fields = (','id','bname','mod.aname')

我希望使用模型 B 的序列化程序访问模型 A 的 aname 字段。使用 mod.aname 不起作用。它说

Field name mod.aname is not valid for model B.

我该怎么做?

将相关模型的字段引用为字符串时使用两个下划线,如'mod__aname'

class HotelSerializer(serializers.ModelSerializer):
    mod= ASerializer(many=False, read_only=True)

    class Meta:
        model = Hotel
        fields = ('id','bname','mod__aname')

如果 ASerializer 看起来像这样,这应该有效:

class ASerializer(serializers.ModelSerializer):

    class Meta:
        model = A
        fields = '__all__'

这个怎么样?在 serializers.CharField:

中使用参数 source
class BSerializer(serializers.ModelSerializer):
    mod = serializers.CharField(
        source='mod.aname',
        read_only=True
    )

    class Meta:
        model = B
        fields = ('id','bname','mod')