IntegrityError at UNIQUE constraint failed: sales_salesitem.product_id django
Привет всем и каждому! Я застрял в одной точке и получаю ошибку:
IntegrityError at /meet/report_meeting/sales_person/1/customer/1/product/1/meeting_request/1/ UNIQUE constraint failed: sales_salesitem.product_id
Я получаю эту ошибку при попытке использовать метод create() в следующем фрагменте, как показано ниже:
def report_meeting(request, product_id, customer_id, sales_person_id, request_id):
form = ReportMeetingForm()
sales_person = Sales_person_profile.objects.get(id=sales_person_id)
customer = Customer_profile.objects.get(id=customer_id)
product_under_discussion = Product.objects.get(id=product_id)
if request.method == "POST":
form = ReportMeetingForm(request.POST)
if form.is_valid():
instance = form.save(commit=False)
instance.sales_person = sales_person
instance.customer = customer
instance.product_under_discussion = product_under_discussion
sales_person.consulted_cases += 1
cd = form.cleaned_data
if cd['sale_closed'] == False and cd['follow_up'] == True:
instance.number_of_follow_ups += 1
instance.save()
elif cd['sale_closed'] == True and cd['follow_up'] == False:
sales_person.sales_completed += 1
instance.save()
sales_item = SalesItem.objects.create(
product= product_under_discussion,
meeting= instance,
quanity= cache.get('quantity')
)
else:
print(form.errors)
return redirect("accounts:dashboard")
else:
form = ReportMeetingForm()
context = {
'form': form,
}
return render(request, 'chat/report_meeting.html', context)
Теперь самое интересное, я думаю, что экземпляр сохраняется безупречно, что означает, что product_under_discussion имеет объект продукта. Но когда то же самое передается в метод create, он выдает ошибку.
По моему опыту, эта ошибка будет возникать, если я не передаю экземпляр Product. Возможно, я где-то ошибаюсь в своей концепции. В любом случае, это модель SalesItem:
class SalesItem(models.Model):
product = models.OneToOneField(Product, on_delete=models.CASCADE, related_name='sale_item')
meeting = models.ForeignKey(Meeting, on_delete=models.CASCADE, related_name='sale_items')
unit_sale_price = models.CharField(max_length=50, null=True, blank=True)
unit_production_price = models.CharField(max_length=50, null=True, blank=True)
get_cost_sale_price = models.FloatField(null=True, blank=True)
get_cost_production_price = models.FloatField()
profit = models.CharField(max_length=50)
profit_percentage = models.CharField(max_length=50)
quanity = models.SmallIntegerField(default=1)
sales_agent_cut = models.CharField(max_length=50, null=True) # 10% of profit
def save(self, *args, **kwargs):
self.unit_sale_price = self.product.sale_price
self.unit_production_price = self.product.production_price
self.get_cost_sale_price = self.quanity * float(self.unit_sale_price)
self.get_cost_production_price = self.quanity * float(self.unit_production_price)
self.profit = self.get_cost_sale_price - self.get_cost_production_price
self.profit_percentage = str((self.get_cost_sale_price/self.get_cost_production_price) * 100) + str('%')
self.sales_agent_cut = str(float(self.profit) * 0.1) + ' USD'
super(SalesItem, self).save(*args, **kwargs)
Помогите пожалуйста!!!