[英]how to get the value in the Foreign key in django restframework
我是Django Restframework的新手
我有一個關於如何在Django restframework的外鍵中獲取值的問題
當我想使用Django restframework來編寫json時,我的代碼如下。
models.py:
class Movie(models.Model):
link = models.URLField()
title = models.CharField(max_length=255, null=True)
class MovieImage(models.Model):
movieimage = models.ForeignKey(Movie,null=True,blank=True)
img_link = models.URLField(max_length=255, null=True)
img_describe = models.URLField(max_length=255, null=True)
img_rank = models.URLField(max_length=255, null=True)
serializers.py
class MovieSerializer(serializers.ModelSerializer):
images = serializers.RelatedField(many=True, read_only=True, source='movieimage_set')
class Meta:
model = Movie
fields = ('link', 'title', 'images')
我會得到結果:
{
"link": "https://test.com/id=1",
"title": "TEST",
"images": [
"MovieImage object"
]
}
我想知道如何在類images
顯示變量,例如:
{
"link": "https://test.com/id=1",
"title": "TEST",
"images"[img_describe: "img_describe value",
img_link: "img_link vlaue" ]
}
如果只需要images
是只讀的,則可以使用嵌套的序列化程序來實現。 如果它必須是可寫的,那么您可能會遇到一些問題,因為嵌套序列化器在DRF <3.0中編寫時會遇到問題,尤其是在許多這樣的情況下。
您將必須為圖像編寫一個序列化器,類似於:
class MovieImageSerializer(serializers.ModelSerializer):
img_link = serializers.URLField()
img_describe = serializers.CharField()
class Meta:
model = MovieImage
fields = ('img_link', 'img_describe', )
並將其添加到您當前的序列化器中,以代替該字段,類似於:
class MovieSerializer(serializers.ModelSerializer):
images = MovieImageSerializer(many=True, read_only=True, source='movieimage_set')
class Meta:
model = Movie
fields = ('link', 'title', 'images')
這將為您提供與嵌套對象類似的輸出:
{
"link": "https://test.com/id=1",
"title": "TEST",
"images": [
{
"img_describe": "the value",
"img_link": "a link"
}
]
}
您可以在Django REST Framework文檔中找到有關嵌套關系的更多信息。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.