每当我定义depth
属性时,POST部分中swagger文档的外键字段就会消失。这似乎很奇怪,因为当我想要depth = 1
请求中的相关数据时,我需要GET
。因此,为了获得POST
部分中的相关字段参数,我无法删除它。
就是这种情况。
型号:
from django.db import models
from django.conf import settings
# Create your models here.
User = settings.AUTH_USER_MODEL
class Todo(models.Model):
user = models.ForeignKey(User)
title = models.CharField("Title", max_length=255)
completed = models.BooleanField("Completed")
不带
depth =1
的序列化器。from rest_framework import serializers
from models import Todo
class TodoSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = Todo
摇摇输出:
现在,如果我添加
depth = 1
而不是,则Swagger不会显示相关字段。让我知道是否有人对此有任何线索。
谢谢 :)
最佳答案
最后,在深入研究之后,我提出了解决方案,通过该解决方案,我们可以避免此问题并实现预期的解决方案。
因此,解决方案是“我们可以使用自身相关的序列化程序实例来代替depth = 1
属性,而该实例化程序的工作方式类似于depth
功能。”
这是经过测试的解决方案
型号:
from django.db import models
from django.conf import settings
User = settings.AUTH_USER_MODEL
class Todo(models.Model):
user = models.ForeignKey(User)
title = models.CharField("Title", max_length=255)
completed = models.BooleanField("Completed")
序列化器
from rest_framework import serializers
from django.conf import settings
from models import Todo
User = settings.AUTH_USER_MODEL
class UserSerializer(serializers.HyperlinkedSerializer):
class Meta:
model = User
class TodoSerializer(serializers.HyperlinkedModelSerializer):
user = UserSerializer()
class Meta:
model = Todo
fields = ('user', 'title', 'completed')
摇摇输出:
为了实现所需的功能,此解决方案是一种不同的方法,但是我仍然期望
django-rest-swagger
团队提供正式的解决方案,即使我已经在django-rest-swagger github repo here上发布了相同的查询。关于django-rest-framework - 在序列化器中添加depth属性后,外键字段在swagger文档中消失了,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34564760/