[Python] Contacts matching query does not exist in Django rest framework

Discussão em 'Python' iniciado por Stack, Fevereiro 9, 2025.

  1. Stack

    Stack Membro Participativo

    I am trying to update Contact model fields while creating the new fields of UpdateInfo model and add them to the existing model.

    But I am getting this error


    contacts.models.Contacts.DoesNotExist: Contacts matching query does not exist.
    ​

    I know the contact object with the id 19 exists because I can see it when I try the get contacts API.

    I am sending data like this:

    [​IMG]

    My models:

    class Contacts(models.Model):
    full_name = models.CharField(max_length=100, blank=True)
    .........

    def __str__(self):
    return self.full_name

    class Meta:
    verbose_name_plural = 'Potential Clients'



    class UpdateInfo(models.Model):
    contacts = models.ForeignKey(Contacts,on_delete=models.CASCADE, related_name='update_info')
    updated_at = models.DateTimeField(auto_now=True)
    modified_by = models.CharField(max_length=100, blank=True)


    def __str__(self):
    return f"Last modified by {self.modified_by} at {self.updated_at}"


    My views:

    class EditContactView(RetrieveUpdateDestroyAPIView):
    permission_classes = [IsAuthenticated]
    queryset = Contacts.objects.all()
    serializer_class = ContactsUpdateSeializer


    My serializers:

    class UpdateInfoSerializer(serializers.ModelSerializer):
    contacts= serializers.PrimaryKeyRelatedField(read_only=True)
    class Meta:
    model = UpdateInfo
    fields = ['id','contacts','updated_at','modified_by']


    class ContactsUpdateSeializer(serializers.ModelSerializer):
    update_info = UpdateInfoSerializer(many=True)
    id = serializers.PrimaryKeyRelatedField(read_only=True)
    class Meta:
    model = Contacts
    fields = ['id', 'full_name', 'lead_source', 'email', 'phone', 'contact_owner',
    'contact_status', 'company_name', 'job_position', 'tasks',
    'notes', 'email_list', 'created_by', 'created_at', 'update_info']


    def update(self, instance, validated_data):
    update_data = validated_data.pop('update_info')
    id = validated_data.get('id')
    contacts = Contacts.objects.get(id=id)
    #contacts.save()

    #contact_only_update_logic
    instance.full_name = validated_data.get('full_name')
    instance.lead_source = validated_data.get('lead_source')
    instance.email = validated_data.get('email')
    instance.phone = validated_data.get('phone')
    instance.contact_owner = validated_data.get('contact_owner')
    instance.contact_status = validated_data.get('contact_status')
    instance.company_name = validated_data.get('company_name')
    instance.job_position = validated_data.get('job_position')
    instance.tasks = validated_data.get('tasks')
    instance.notes = validated_data.get('notes')
    instance.email_list = validated_data.get('email_list')
    instance.save()

    #add_update_info_logic

    for update_data in update_data:
    abc = UpdateInfo.objects.create(contacts=contacts,**update_data)
    instance.update_info.add(abc)

    instance.save()
    return instance

    Continue reading...

Compartilhe esta Página