Django 框架视图没有显示我的使用嵌套序列化程序的多对一类型



你好,我正在尝试使用django-Rest框架制作Rest API,但在发出post请求后,将自定义类值放入嵌套的序列化程序。get请求显示,当我正确发布post时,它是空的。

这是我的模型类:

from django.db import models

# Create your models here.
class Pista(models.Model):
color = models.CharField(max_length=10)
km_pista = models.FloatField(default=0)
def __str__(self):
return '{}'.format(self.color)

class Forfait(models.Model):
precio = models.FloatField(default=0)
edad = models.IntegerField(default=0)
def __str__(self):
return '{}'.format("Precio " + str(self.precio) + ' edad ' + str(self.edad))

class Estacion(models.Model):
nombre = models.CharField(max_length=30)
ciudad = models.CharField(max_length=15)
pais = models.CharField(max_length=20)
descripcion = models.CharField(max_length=300)
pistas = models.ForeignKey(Pista, on_delete=models.CASCADE, null=True)
forfaits = models.ForeignKey(Forfait, on_delete=models.CASCADE, null=True)
km_esquiables = models.FloatField(default=0)
def __str__(self):
return '{}'.format(self.nombre)

我的序列化程序:

class PistaSerializer(serializers.ModelSerializer):
class Meta:
model = Pista
fields = ('color', 'km_pista')

class ForfaitSerializer(serializers.ModelSerializer):
class Meta:
model = Forfait
fields = ('precio', 'edad')

class EstacionSerializer(serializers.ModelSerializer):
pistas = PistaSerializer(read_only=True, many=True)
forfaits = ForfaitSerializer
class Meta:
model = Estacion
fields = ('nombre', 'ciudad', 'pais', 'descripcion',
'pistas', 'forfaits', 'km_esquiables')
depth = 1

我的看法:

class EstacionViewSet(viewsets.ModelViewSet):
queryset = Estacion.objects.all()
serializer_class = EstacionSerializer

和urls:

router = routers.DefaultRouter()
router.register(r'estaciones', views.EstacionViewSet)
urlpatterns = [
path('', include(router.urls)),
]

我认为多对多是最好的表达方式,因为我希望每个Estacion都有一份Pista的名单,但也许我错了,如果你也能澄清我的这一点,我将不胜感激。

感谢

Hi问题是我在序列化程序的字段中使用了((而不是[]。使用[]我可以列出它们。

最新更新