DjangoRestFramework,我想要名称而不是ID,

时间:2019-05-19 19:08:15

标签: django django-rest-framework

我在模型中有一个关系,我想让您告诉我您分配的名称而不是ID

我拥有的apps.control.models

class Movimiento(models.Model):
    tipo = models.CharField(max_length=1, blank=True, null=True, choices=TIPO)# Compra o Nacimiento
    descripcion = models.CharField(max_length=20, blank=True, null=True, choices=DESCRIP)
    fecha = models.DateField(blank=True, null=True)
    arete = models.CharField(max_length=10, blank=True, null=True)
    pesonacimiento = models.IntegerField(default=0)
    raza = models.ForeignKey(Raza, blank=True, null=True, on_delete=models.CASCADE, related_name='movimiento_raza')
    imagen = models.ImageField(verbose_name="Imagen", blank=True, null=True, upload_to="ovinos")
    peso = models.IntegerField(default=0)
    observaciones = models.CharField(max_length=255, blank=True, null=True)

    def __str__(self):
        return self.arete

我拥有的apps.catalogos.models

class Raza(models.Model):
    codigo = models.CharField(max_length=4,blank=True,null=True)
    nombre = models.CharField(max_length=100,blank=True,null=True)
    color = ColorField(default='#FF0000')

    def __str__(self):
        return self.nombre

我的序列化器是:

class MovimientoSerializer(ModelSerializer):
    descripcion = serializers.SerializerMethodField()
    tipo = serializers.SerializerMethodField()

    class Meta:
        model = Movimiento
        fields = '__all__'

    def get_descripcion(self,obj):
        dato = obj.get_descripcion_display()
        return dato

    def get_tipo(self,obj):
        dato = obj.get_tipo_display()
        return dato

如何获取raza目录的名称而不是ID,有人可以帮我吗?

我的api中的名称

HTTP 200 OK
Allow: GET, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

[
    {
        "id": 11,
        "descripcion": "Semental",
        "tipo": "Compra",
        "fecha": "2019-05-08",
        "arete": "A-001",,
        "pesonacimiento": 0,
        "peso": 0,
        "observaciones": "Es la primera",
        "raza": 3  **<----- here the name, not the id** 
    }

1 个答案:

答案 0 :(得分:2)

您也许可以使用SlugRelatedField serializer field

class MovimientoSerializer(ModelSerializer):
    raza = serializers.SlugRelatedField(slug_field="nombre", queryset=Raza.objects.all())
    # other fields...