我有两个模型:
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"
},
如果我删除
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"
},
]
},
所以这是我的问题:
是否可以覆盖文章序列化程序中的选择字段,或者是否有另一种方法将 API 视图中的文章显示为选项
以下是汤姆·克里斯蒂给我的答案:
如果它是嵌套项,则不希望将其显示为选项。相反,我们应该将其显示为嵌套字段。(我们可以认为这是一个有效的问题,因为我在自己的雷达上认为它的优先级很低,所以除非其他人在运行它,然后......
在您自己的项目(而不是核心)中支持这一点方面,这里有一些关于如何做到这一点的有限信息......http://www.django-rest-framework.org/api-guide/metadata/,但您还想深入研究现有的元数据类实现。