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)