【问题标题】:Django Serialize multiple models in a single viewDjango 在单个视图中序列化多个模型
【发布时间】:2018-09-12 04:25:16
【问题描述】:

这是场景,我有两个模型 Offre 和 Recruteur

class Recruteur(models.Model):  
    [...]
    entrepriseName = models.CharField(max_length=50)
    [...]

class Offre(models.Model):          
    [...]
    idRecruteur = models.ForeignKey(Recruteur,verbose_name = "idRecruteur", on_delete=models.CASCADE, default=None)
    [...]   

我有以下序列化程序:

class RecruteurByIdSerializer(serializers.ModelSerializer):

    class Meta:
        model = Recruteur
        fields = ( 'entrepriseName',)

class OffreSerializer(serializers.ModelSerializer):
    recruteur = RecruteurByIdSerializer(many=True, read_only=True)
    class Meta:

        model = Offre
        fields = ( 'title', 'dateAjout', 'description', 'recruteur')

我期待这个结果:

但我得到了这个:

我做错了什么?

【问题讨论】:

    标签: django serialization model


    【解决方案1】:

    你必须提供source参数如下,

    class OffreSerializer(serializers.ModelSerializer):
        entrepriseName = RecruteurByIdSerializer(source='idRecruteur', read_only=True)
    
        class Meta:
            model = Offre
            fields = ('title', 'dateAjout', 'description', 'entrepriseName')
    

    【讨论】:

    • 感谢您的回答,但这个引发的“Recruteur”对象不可迭代
    • 因为offre_instance.idRecruteur一直是FK对象,所以不可能是more than one
    猜你喜欢
    • 2014-07-05
    • 1970-01-01
    • 1970-01-01
    • 2017-10-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多