简体   繁体   中英

How to get data related from another table django rest framework

I have three model Pesticide, Disease and Instruction what i want is to get all disease with relation to pesticide which relate to instruction model

class Disease(models.Model):
    name = models.CharField(max_length=100)
    def __str__(self):
        return self.name

class Pesticide(models.Model):
    name = models.CharField(max_length=50)
    def __str__(self):
        return self.name


class Treatment(models.Model):
    disease = models.ForeignKey(Disease, related_name='treatments', on_delete=models.DO_NOTHING)
    pesticide = models.ForeignKey(Pesticide, related_name='treatments', on_delete=models.DO_NOTHING)

    def __str__(self):
        return self.instruction

and serializer

class PesticideSerializer(serializers.ModelSerializer):
   
    class Meta:
        model = Pesticide
        fields = ('id', 'name')

class DiseaseSerializer(serializers.ModelSerializer):
    pesticides = PesticideSerializer(source='treatment_set', read_only=True)
    class Meta:
        model = Disease
        fields = [

            'id',
            'name',
            'pesticides',
           
        ]

My problem is that i can not get pesticides in django serializer

Use serializers.SerializerMethodField as

class DiseaseSerializer(serializers.ModelSerializer):
    

    class Meta:
        model = Disease
        fields = ['id', 'name', 'pesticides']

我认为将pesticides = PesticideSerializer(source='treatment_set', read_only=True) DiseaseSerializer的行pesticides = PesticideSerializer(source='treatment_set', read_only=True) DiseaseSerializerpesticides = PesticideSerializer(source='treatment_set', read_only=True, many=True)将解决您的问题(您应该添加many=True因为关系类型是一对多)。

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

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