簡體   English   中英

如何在Django RestFramework中的外鍵中獲取值

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM