Hi every one
i have two models
one for saving product data
class Good(models.Model):
mainbranch = models.ForeignKey(
MainBranch, on_delete=models.CASCADE,
verbose_name='کد دسته اصلی', default=0
)
subbranch1 = models.ForeignKey(
SubBranch1, on_delete=models.CASCADE,
verbose_name='کد دسته فرعی 1', default=0
)
subbranch2 = models.ForeignKey(
SubBranch2, on_delete=models.CASCADE,
verbose_name='کد کالا', default=0
)
subbranch3 = models.ForeignKey(
SubBranch3, on_delete=models.CASCADE,
verbose_name='نام کالا', default=0, related_name='good_name')
goodproperties = models.OneToOneField(
GoodProperties, on_delete=models.CASCADE,
verbose_name='مشخصات کالا', null=True, blank=True
)
goodspecifications = models.OneToOneField(
GoodSpecification, on_delete=models.CASCADE,
verbose_name='معرفی کالا', default=0, null=True, blank=True
)
image = models.ImageField(upload_to='photos/%Y/%m/%d', null=True, blank=True, verbose_name='تصویر کالا')
quantity = models.PositiveIntegerField(default=0, verbose_name='تعداد موجود')
price = models.DecimalField(
decimal_places=0, max_digits=12, default=0,
verbose_name='قیمت کالا'
)
discount = models.SmallIntegerField(null=True, blank=True, verbose_name='میزان تخفیف')
seller = models.ManyToManyField('Seller', verbose_name='کد فروشنده')
and one for saving customers buy basket data
class BuyBasket(models.Model):
customer = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE, blank=True, null=True,
verbose_name='کد مشتری')
mainbranch = models.ForeignKey(
MainBranch, on_delete=models.CASCADE, verbose_name='کد دسته اصلی کالا', default=0) # type: ignore
subbranch1 = models.ForeignKey(
SubBranch1, on_delete=models.CASCADE, verbose_name='کد دسته فرعی 1 کالا', default=0) # type: ignore
subbranch2 = models.ForeignKey(
SubBranch2, on_delete=models.CASCADE,verbose_name='کد دسته فرعی 2', default=0) # type: ignore
subbranch3 = models.ForeignKey(
SubBranch3, on_delete=models.CASCADE,verbose_name='نام کالا',default=0
) # type: ignore
quantity = models.PositiveIntegerField(verbose_name='تعداد')
price = models.ForeignKey(Good, on_delete=models.CASCADE, default=0, verbose_name='قیمت کالا') # type: ignore
total_price = models.DecimalField(decimal_places=0, max_digits=16, default=0, verbose_name='مبلغ کل سفارش') # type: ignore
change_to_order = models.BooleanField(blank=True, null=True, verbose_name='تبدیل به سفارش')
also this piece of code in my views.py that is going to add a product to customer’s basket
def add_to_buybasket(request, g_id):
good_item = Good.objects.get(id=g_id)
if request.method == 'POST':
form =QuantityForm(request.POST)
if form.is_valid():
value = form.cleaned_data['quantity']
obj, created = BuyBasket.objects.update_or_create(
customer_id = request.user.id,
mainbranch_id = good_item.mainbranch.id,
subbranch1_id = good_item.subbranch1.id,
subbranch2_id = good_item.subbranch2.id,
subbranch3_id = good_item.subbranch3.id,
quantity = value,
price_id = good_item.price, # here the problem appears
total_price = value * good_item.price,
change_to_order = False,
)
messages.success(request, 'کالا به سبد خرید شما اضافه شد')
return HttpResponseRedirect(reverse('goods_list', kwargs={'pk': g_id}))
the problem is when i want to set price field of BuyBasket model with the value of corresponding Good one Django throws this error
insert or update on table "orders_buybasket" violates foreign key constraint "orders_buybasket_price_id_bbb4aff1_fk_goods_good_id"
DETAIL: Key (price_id)=(18000000) is not present in table "goods_good".
Could you tell me where the problem is
Thanks