Ich habe drei Modelle für Pestizide, Krankheiten und Anweisungen. Ich möchte alle Krankheiten in Bezug auf Pestizide bekommen, die sich auf das Instruktionsmodell beziehen

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

Und 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',
           
        ]

Mein Problem ist, dass ich keine Pestizide in Django Serializer bekommen kann

1
Epimark Chami 1 Sept. 2020 im 11:51

2 Antworten

Beste Antwort

Ich denke, das Ändern der Zeile pesticides = PesticideSerializer(source='treatment_set', read_only=True) in DiseaseSerializer in pesticides = PesticideSerializer(source='treatment_set', read_only=True, many=True) wird Ihr Problem lösen (Sie sollten many=True hinzufügen, da der Beziehungstyp eins zu viele ist).

0
Roham 1 Sept. 2020 im 09:16