繁体   English   中英

串行器 Django

[英]Serializers Django

您好我想通过序列化器连接两个模型。 我有一个连接,它工作得很好,因为主键属于 UsuarioDetailSerializer,外键属于 ComentarioSerializer。

class ComentarioSerializer(serializers.HyperlinkedModelSerializer):
    class Meta:
        fields = ['id', 'contenido_comentario','fecha_comentario',]
        model = Comentarios

class HabilidadSerializer(serializers.HyperlinkedModelSerializer):
    class Meta:
        fields = ['id', 'nombre_habilidad',]
        model = Habilidad

class UsuarioDetailSerializer(serializers.ModelSerializer):
    detail = serializers.SerializerMethodField()
    usuario_comentado = ComentarioSerializer(many=True)
    habilidad = HabilidadSerializer()
    class Meta:
        model = Usuario
        fields = [
            'id',
            'id_usuario',
            'nombre_usuario',
            'apellido_usuario',
            'descripcion_usuario',
            'direccion_usuario',
            'foto_usuario',
            'detail',
            'usuario_comentado',
            'habilidad',
        ]
    def get_detail(self, obj):
        return reverse('usuario_detail',args=(obj.pk,))

我想做的另一个连接是在序列化器 UsuarioDetailSerializer 和 HabilidadSerializer 之间,但我不能这样做,因为主键属于 HabilidadSerializer,外键属于 UsuarioDetailSerializer,我不知道如何解决这个问题。 我想将 HabilidadSerializer 中的数据显示到 UsuarioDetailSerializer 中。

一旦尝试这个。

class UsuarioDetailSerializer(serializers.ModelSerializer):
    detail = serializers.SerializerMethodField()
    usuario_comentado = ComentarioSerializer(many=True)
    habildad = serializers.PrimaryKeyRelatedField(queryset=habilidad.objects.all())     
    class Meta:
        model = Usuario
        fields = [
            'id',
            'id_usuario',
            'nombre_usuario',
            'apellido_usuario',
            'descripcion_usuario',
            'direccion_usuario',
            'foto_usuario',
            'detail',
            'usuario_comentado',
            'habilidad',
        ]
    def get_detail(self, obj):
        return reverse('usuario_detail',args=(obj.pk,))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM