Невозможно присвоить "'Рубашка мужская": "CartProdVarient.cart_product" должен быть экземпляром "CartProduct".

Модели

class CartProduct(models.Model):
    cart_product_name = models.CharField(max_length=200)
    cart_holder = models.ForeignKey(User, on_delete=models.CASCADE)
    def __str__(self):
        return self.cart_product

class CartProdVarient(models.Model):
    cart_product = models.ForeignKey(CartProduct, on_delete=models.CASCADE)
    cart_prod_varient = models.CharField(max_length=200)
    def __str__(self):
        return self.cart_prod_varient

Виды

 def add_cart(request):
    prod = Product.objects.get(id=request.POST.get('product_id'))

    CartProdVarient(cart_product=prod.product_name).save()

    return render(request, 'app/service-page.html')

Проблема Я хочу присвоить некоторое значение "cart_product", в то время как это Внешний ключ, но это дает мне ошибку...

я хочу что-то вроде этого :

 CartProdVarient(cart_product="T-Shirt", cart_prod_varient="small size").save()

T-Shirt уже есть в "cart_product_name"

Ваши модели работают нормально. Интеграция внешних ключей и поля модели корректны. В модели нет ошибок.

Проблема в ваших взглядах :

prod = Product( id = request.POST.get("product_id") 
#  this return an product object named prod , and this is a product object. 

Смотрите вашу модель CartProductVariant , вы определили cart_product как foreignkey для модели CartProduct .


class CartProdVarient(models.Model):
    cart_product = models.ForeignKey(CartProduct, on_delete=models.CASCADE)
    cart_prod_varient = models.CharField(max_length=200)
    def __str__(self):
        return self.cart_prod_varient

Ваша первая ошибка . Посмотрите на свои взгляды в этой строке :

CartProdVarient(cart_product=prod.product_name).save()

Вы определили связь с объектом CartProduct, но вы предоставляете имя объекта CartProduct. Это две разные модели. Это может быть первым случаем ошибки .

Ваша вторая ошибка. Теперь посмотрите на свои взгляды, в этой строке :

CartProdVarient(cart_product=prod.product_name).save()

Вы определили связь с CartProduct, в Django при создании внешнего ключа в качестве аргумента указывается объект, но вы указываете название продукта, в то время как cart_product берет объект самого CartProduct. Он не принимает поля модели, он принимает сам объект.

Измените код на следующий, если модель CartProduct и Product одинаковы :

CartProdVarient(cart_product=prod).save()

Если модели CartProduct и Proudct не совпадают (а я думаю, что это не так), вам следует изменить аргумент cart_product объекта Product на объект CartProject.

CartProdVarient(cart_product= CartPoduct.objects.get(id = request.POST.get("cart_product_id"))).save()

Весь код представления должен быть изменен в зависимости от модели, которую вы создали, и от того, какие отношения вы определили для моделей .

Если модель Product и модель CartProduct одинаковы (а я не думаю, что это так). Используйте этот фрагмент кода .

def add_cart(request):
    prod = Product.objects.get(id=request.POST.get('product_id'))

    CartProdVarient(cart_product=prod).save()

    return render(request, 'app/service-page.html')

Если они разные, используйте следующее :

def add_cart(request):
    prod = CartProduct.objects.get(id=request.POST.get('cart_product_id'))

    CartProdVarient(cart_product=prod).save()

    return render(request, 'app/service-page.html')
Вернуться на верх