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)
DiseaseSerializer
为pesticides = 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.