这里有两个简单的模型作为例子:
class Author(models.Model):
name = models.CharField(blank=True, max_length=50)
age = models.IntegerField(null=True, )
class Book(models.Model):
title = models.CharField(max_length=100)
author = models.ForeignKey(Author)
date = models.DateField()
现在我要做的是为Book
创建一个视图,使用Django Rest Framework从Author
中获取其中一个值。这是一个例子ModelSerializer
:
class BookMetaSerializer(serializers.ModelSerializer):
class Meta:
model = Book
fields = ('title','date','author__name',)
麻烦的是,我无法像上面author__name
那样访问DRF中的foriegn键的字段。我还没有能够根据文档弄清楚如何做到这一点。感谢所有帮助,谢谢!
答案 0 :(得分:1)
您可以使用author_name
参数定义source
字段,以获取作者的姓名。
将用于填充字段的属性的名称。可以 是一个只接受
self
参数的方法,例如URLField('get_absolute_url')
或可以使用虚线表示法进行遍历 属性,例如EmailField(source='user.email')
。
最终代码:
class BookMetaSerializer(serializers.ModelSerializer):
# use dotted notation to traverse to 'name' attribute
author_name = serializers.CharField(source='author.name', read_only=True)
class Meta:
model = Book
fields = ('title','date','author_name',)