簡體   English   中英

Django Rest Framework:將ModelSerializer作為ModelSerializer中的字段不顯示選擇

[英]Django Rest Framework: ModelSerializer as field in a ModelSerializer doesn't show choices

我有兩個模型:

class Article(models.Model):
    name = models.CharField(max_length=255)
    price = models.DecimalField(max_digits=8, decimal_places=2)

class Order(models.Model):
    article = models.ForeignKey(article, related_name='orders')
    bought_on = models.DateTimeField()

和兩個序列化器類:

class ArticleSerializer(serializers.ModelSerializer):
    class Meta:
        model = Article

class OrderSerializer(serializers.ModelSerializer):
    article = ArticleSerializer()

    class Meta:
        model = Order

現在,如果我想請求訂單的選項,我沒有得到“選擇”,它看起來像這樣:

"article": {
    "type": "field", 
    "required": true, 
    "read_only": false, 
    "label": "Article"
}, 

如果我刪除

文章= ArticleSerializer()

從OrderSerializer一切正常,我獲得了很多有關文章的信息,即:

"article": {
    "type": "field", 
    "required": true, 
    "read_only": false, 
    "label": "Article", 
    "choices": [
        {
            "display_name": "Headphones - 29.00", 
            "value": "8"
        }, 
        {
            "display_name": "Monitor- 199.00", 
            "value": "12"
        },
    ]
}, 

所以這是我的問題:

是否有可能覆蓋ArticleSerializer中的choices字段,或者是否有另一種方式可以將API View中的Articles顯示為options

這是湯姆·克里斯蒂給我的答案:

如果它是嵌套項目,則不想將其顯示為選項。 相反,我們應該將其顯示為嵌套字段。 (我們可以認為這是一個有效的問題,在我自己的雷達上,我認為它的優先級很低,因此,除非其他人正在運行它,否則...)

關於在您自己的項目中(而不是在核心中)支持這一點,這里有一些有限的信息說明了如何進行此操作... http://www.django-rest-framework.org/api-guide/metadata /,但您也想深入研究現有的元數據類實現。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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