FOREIGN KEY constraint failed

Hi, i have a ManyToMany in RepairReport Model as shown below:

class RepairService(models.Model):
    name = models.CharField(max_length=75)
    price = models.PositiveIntegerField(null=True, blank=True)
    owner = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)


    def __str__(self) -> str:
        return self.name
    

class RepairReport(models.Model):
    report_number = models.PositiveIntegerField(primary_key=True, default=generate_report_number)
    repairman = models.ForeignKey(RepairmanUser, on_delete=models.CASCADE)
    customer = models.ForeignKey(CustomerInfo, on_delete=models.DO_NOTHING)
    entery_date = jmodels.jDateTimeField(auto_now_add=True, blank=True, null=True)
    release_date = jmodels.jDateTimeField(blank=True, null=True)
    service = models.ManyToManyField(to="repairman.RepairService")
    description = models.TextField(blank=True)
    total_price = models.PositiveIntegerField(blank=True, null=True)
    discount_price = models.PositiveIntegerField(blank=True, null=True, default=0)



    def __str__(self) -> str:
        return str(self.report_number)
    

now in my views.py when i recieve some data from my form and wanna save the form i’ll get the FOREIGN KEY constraint failed error.
views.py:

@login_required(login_url='/profile/login/')
def create_update_report(request, pk):
    user = request.user
    repairman = RepairmanUser.objects.get(user=user)
    customer = CustomerInfo.objects.get(pk=pk)
    services = RepairService.objects.filter(owner=user)
    current_time = jdatetime.datetime.now()
    

    repair_form = RepairReportForm(request.POST or None)
    if request.method == 'POST':
        if repair_form.is_valid():
            report = repair_form.save(commit=False)
            report.repairman = repairman
            report.customer = customer
            report.total_price = request.POST["final-price"]
            form_services = request.POST.getlist("service")
            for s in form_services:
                st = RepairService.objects.get(owner=user, name=s)
                report.service.add(st)
            # print()
            report.save()
            messages.success(request, 'گزارش جدید با موفقیت ثبت شد.')


    serialized_data = core_serializers.serialize('json', list(services), fields=('name','price'))
    context = {
        "repairman": repairman,
        "customer": customer,
        "repair_form": repair_form,
        "current_date": current_time.date,
        "services": services,
        "serialized_data": serialized_data,

    }

    return render(request, "repairman/new_report.html", context)

the error refers to this line of views.py code:

 report.service.add(st)

You can’t save the many-to-many relation instances until after the base object has been saved. You need to do the report.save() before the for loop to save the relations.

Keep in mind that adding / removing a many-to-many relation does not affect either of the two tables being related. The change is only being made to the “through” (or “join”) table.

Side note: Depending on your form, you may not need to manually save the individual instances of the relationship. See the docs for the save() method for details.

thanks. problem solved.